Summary
SourcesApi.get_source_entitlement_request_config in sailpoint.v2024 and sailpoint.v2025 is generated without an id (or source_id) parameter, so there is no way for the caller to specify which source to query. The request is sent with the literal {id} placeholder still in the URL and the server returns 404. The sailpoint.beta variant of the same method is correct, so this looks like a regression in the v2024/v2025 spec or generator config for this one operation.
Steps to reproduce
import sailpoint.v2025
with sailpoint.v2025.ApiClient(config) as client:
api = sailpoint.v2025.SourcesApi(client)
# The wrapper signature does not accept an id, so there is no way to pass it.
api.get_source_entitlement_request_config()
Expected behavior
The wrapper should accept a source id (matching beta, which uses source_id: StrictStr), populate _path_params, and issue GET /v2025/sources/<that-id>/entitlement-request-config, returning the deserialized SourceEntitlementRequestConfig.
Actual behavior
The request hits the API with the literal {id} placeholder still in the path:
GET /v2025/sources/{id}/entitlement-request-config → 404 Not Found
The wrapper signature in sailpoint/v2025/api/sources_api.py has no id parameter:
def get_source_entitlement_request_config(
self,
x_sail_point_experimental: ... = 'true',
_request_timeout: ... = None,
...
) -> SourceEntitlementRequestConfig:
The internal serializer references {id} in resource_path but never populates _path_params:
def _get_source_entitlement_request_config_serialize(
self,
x_sail_point_experimental,
...
):
_path_params: Dict[str, str] = {} # never populated
# process the path parameters # (no-op)
...
return self.api_client.param_serialize(
method='GET',
resource_path='/sources/{id}/entitlement-request-config',
...
)
By contrast, sailpoint/beta/api/sources_api.py is correct — it takes source_id, populates _path_params['sourceId'], and the endpoint works as expected.
Environment
sailpoint 1.4.2
- Python 3.14
- OS: Linux (also reproducible on macOS — bug is in generated code, not platform-specific)
- Affected modules:
sailpoint.v2024.api.sources_api.SourcesApi, sailpoint.v2025.api.sources_api.SourcesApi
Summary
SourcesApi.get_source_entitlement_request_configinsailpoint.v2024andsailpoint.v2025is generated without anid(orsource_id) parameter, so there is no way for the caller to specify which source to query. The request is sent with the literal{id}placeholder still in the URL and the server returns 404. Thesailpoint.betavariant of the same method is correct, so this looks like a regression in the v2024/v2025 spec or generator config for this one operation.Steps to reproduce
Expected behavior
The wrapper should accept a source id (matching
beta, which usessource_id: StrictStr), populate_path_params, and issueGET /v2025/sources/<that-id>/entitlement-request-config, returning the deserializedSourceEntitlementRequestConfig.Actual behavior
The request hits the API with the literal
{id}placeholder still in the path:The wrapper signature in
sailpoint/v2025/api/sources_api.pyhas noidparameter:The internal serializer references
{id}inresource_pathbut never populates_path_params:By contrast,
sailpoint/beta/api/sources_api.pyis correct — it takessource_id, populates_path_params['sourceId'], and the endpoint works as expected.Environment
sailpoint1.4.2sailpoint.v2024.api.sources_api.SourcesApi,sailpoint.v2025.api.sources_api.SourcesApi