Skip to content

[Bug] sources_api.get_source(id) 1 validation error for Source owner #104

@scott-fehrman-sp

Description

@scott-fehrman-sp

Describe the bug
Calling Source get_source(id) with the id for IdentityNowConnector raises exception. Other sources work correctly. REST API works correctly. Many of the values are "null".

To Reproduce Steps to reproduce the behavior:

  1. Run following test with source id for IdentityNowConnector
from sailpoint.configuration import Configuration
from sailpoint.v2025.api_client import ApiClient
from sailpoint.v2025.api.sources_api import SourcesApi
from sailpoint.v2025.models.source import Source

# ID: "5f0e1c7ad5b0448d9c19cd5ee44d716a" type=Active Directory
# ID: "70f09392177241d39d6a4baafe360238" type=IdentityNowConnector ... ERROR
id: str = "70f09392177241d39d6a4baafe360238"
config: Configuration = Configuration()
config.experimental = True
config.suppress_experimental_warnings = True

api_client: ApiClient = ApiClient(configuration=config)
sources_api: SourcesApi = SourcesApi(api_client)
source: Source = sources_api.get_source(id)

print(f"Name: {source.name}, Description: {source.description}, Type: {source.type}")

Expected behavior

Returns source object:

python tests/test_get_source.py
Name: Active Directory, Description: Active Directory, Type: Active Directory - Direct

Actual behavior

Raises exception with stack trace:

python tests/test_get_source.py
Traceback (most recent call last):
  File ".../tests/test_get_source.py", line 15, in <module>
    source: Source = sources_api.get_source(id)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/pydantic/_internal/_validate_call.py", line 39, in wrapper_function
    return wrapper(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/pydantic/_internal/_validate_call.py", line 136, in __call__
    res = self.__pydantic_validator__.validate_python(pydantic_core.ArgsKwargs(args, kwargs))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/sailpoint/v2025/api/sources_api.py", line 4509, in get_source
    return self.api_client.response_deserialize(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/sailpoint/v2025/api_client.py", line 339, in response_deserialize
    return_data = self.deserialize(response_text, response_type, content_type)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/sailpoint/v2025/api_client.py", line 479, in deserialize
    return self.__deserialize(data, response_type)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/sailpoint/v2025/api_client.py", line 526, in __deserialize
    return self.__deserialize_model(data, klass)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/sailpoint/v2025/api_client.py", line 864, in __deserialize_model
    return klass.from_dict(data)
           ^^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/sailpoint/v2025/models/source.py", line 225, in from_dict
    _obj = cls.model_validate({
           ^^^^^^^^^^^^^^^^^^^^
  File ".../.venv/lib/python3.12/site-packages/pydantic/main.py", line 705, in model_validate
    return cls.__pydantic_validator__.validate_python(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 1 validation error for Source
owner
  Input should be a valid dictionary or instance of SourceOwner [type=model_type, input_value=None, input_type=NoneType]
    For further information visit https://errors.pydantic.dev/2.11/v/model_type

REST API
Request:

GET https://TENANT.api.identitynow-demo.com/v2025/sources/70f09392177241d39d6a4baafe360238

Response:

{
    "description": null,
    "owner": null,
    "cluster": null,
    "accountCorrelationConfig": null,
    "accountCorrelationRule": null,
    "managerCorrelationMapping": null,
    "managerCorrelationRule": null,
    "beforeProvisioningRule": null,
    "schemas": [
        {
            "type": "CONNECTOR_SCHEMA",
            "id": "6cb79520f5fc41479f7206466195a83a",
            "name": "account"
        }
    ],
    "passwordPolicies": [
        {
            "type": "PASSWORD_POLICY",
            "id": "d3c9bdcefd1d4f0ca22edaa0d0de6469",
            "name": "Default"
        }
    ],
    "features": [
        "ENABLE",
        "PASSWORD",
        "SYNC_PROVISIONING",
        "PROVISIONING",
        "DISCOVER_SCHEMA",
        "NO_RANDOM_ACCESS"
    ],
    "type": "IdentityNowConnector",
    "connector": "identitynowconnector",
    "connectorClass": "sailpoint.connector.IdentityNowConnector",
    "connectorAttributes": {
        "onDeleteRemoveEntitlements": false,
        "cloudDisplayName": "IdentityNow",
        "templateApplication": null,
        "disableLinkFiltering": false,
        "disableManagedEntitlementFiltering": false
    },
    "deleteThreshold": null,
    "authoritative": false,
    "healthy": false,
    "status": "SOURCE_STATE_UNCHECKED_SOURCE",
    "since": null,
    "connectorId": "identitynowconnector",
    "connectorName": null,
    "connectionType": null,
    "connectorImplementationId": "identitynowconnector",
    "managementWorkgroup": null,
    "credentialProviderEnabled": false,
    "category": null,
    "accountsFile": null,
    "id": "70f09392177241d39d6a4baafe360238",
    "name": "IdentityNow",
    "created": "2024-02-06T23:34:34.198Z",
    "modified": "2024-07-26T03:43:14.456Z"
}

Operating System (please complete the following information):

  • Python 3.12
  • SailPoint Python SDK 1.3.7

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions