microsoftgraph / msgraph-sdk-python

MIT License
359 stars 49 forks source link

schema.patch SynchronizationSchema : 404 No HTTP resource was found that matches the request URI #820

Open dominique-lambert-OBS opened 1 month ago

dominique-lambert-OBS commented 1 month ago

Describe the bug

I'm trying to update one Attribut Mapping from a Synchronisation Job. For information, the provisioning job is created on template_id “gsuite”. When I launch the schema.patch() method I have the API Error.

APIError Code: 404 message: None error: MainError(additional_data={}, code='UnknownError', details=None, inner_error=InnerError(additional_data={}, client_request_id='0bbde296-b67b-4dcd-a4fb-35fcd5fa98f5', date=DateTime(2024, 7, 18, 7, 14, 15, tzinfo=Timezone('UTC')), odata_type=None, request_id='c86232e3-3a57-458c-8c44-3f2874146620'), message='{"Message":"No HTTP resource was found that matches the request URI \'https://syncfabric.windowsazure.com/api/servicePrincipals(\'acc560a1-67df-4d8d-abd0-7cf74a1d7211\')/synchronization/jobs(\'gsuite.b126ececd749434c915e443764450031.8f782d8a-7b79-4417-aab7-f96538801e92\')/schema?api-version=2.0\'."}', target=None)

Expected behavior

All I do now is read the shema and then patch the shema as is without modifying it. I expect the schema to be patched without modification. I'll then have to update the Objects Mapping.

How to reproduce

async def patch_synchronizationSchema_case(service_principal_id: str):
    # Read Service Principal
    servicePrincipal = await client.service_principals.by_service_principal_id(service_principal_id).get()
    print(f'=================')
    print(f'app_display_name : {servicePrincipal.app_display_name}')

    # Read Job
    jobs = await client.service_principals.by_service_principal_id(service_principal_id).synchronization.jobs.get()

    if len(jobs.value) == 0:
        print(f'There is no synchronisation job')
        return

    job=jobs.value[0]
    synchronizationJob_id=jobs.value[0].id
    print(f'job template id : {job.template_id}')
    print(f'job id : {synchronizationJob_id}')

    # Read schema
    schema = await client.service_principals.by_service_principal_id(service_principal_id).synchronization.jobs.by_synchronization_job_id(synchronizationJob_id).schema.get()

    # Modifie Object Mapping
    # TODO

    # Patch schema
    await client.service_principals.by_service_principal_id(service_principal_id).synchronization.jobs.by_synchronization_job_id(synchronizationJob_id).schema.patch(schema)

asyncio.run(patch_synchronizationSchema_case(GCP_DEV2_servicePrincipal_id))

SDK Version

1.5.3

Latest version known to work for scenario above?

No response

Known Workarounds

No response

Debug output

Click to expand log ``` APIError Code: 404 message: None error: MainError(additional_data={}, code='UnknownError', details=None, inner_error=InnerError(additional_data={}, client_request_id='3006e706-78d4-4a17-bf17-0a02ff65b55c', date=DateTime(2024, 7, 18, 7, 26, 24, tzinfo=Timezone('UTC')), odata_type=None, request_id='fb6b307f-6a84-41f0-aeae-52d8b9d4cd00'), message='{"Message":"No HTTP resource was found that matches the request URI \'https://syncfabric.windowsazure.com/api/servicePrincipals(\'acc560a1-67df-4d8d-abd0-7cf74a1d7211\')/synchronization/jobs(\'gsuite.b126ececd749434c915e443764450031.8f782d8a-7b79-4417-aab7-f96538801e92\')/schema?api-version=2.0\'."}', target=None) ```

Configuration

No response

Other information

No response

shemogumbe commented 1 month ago

Hello @dominique-lambert-OBS , Thanks for using the python SDK and for raising this.

In In order to help us reproduce and help fix this, are there active synchronization jobs?

For instance, len(jobs.value) a number greater than 0, considering you are seeing a 404 when patching, could this be the reason, same for synchronization jobs and schema.

dominique-lambert-OBS commented 3 weeks ago

Hello, Yes I can confirm that len(jobs.value) egals 1

================= app_display_name : GCP DEV2 Jobs len : 1 job template id : gsuite job id : gsuite.b126ececd749434c915e443764450031.1c0969ff-f1fd-440a-852c-bf0943750273

dominique-lambert-OBS commented 3 weeks ago

Hello, @baywet, can we re-open this case ? Best regards, Dominique

baywet commented 3 weeks ago

Hi @dominique-lambert-OBS Thanks for the nudge here. @shemogumbe it seems the metadata for this API is incorrect, the API is expecting a PUT, not a PATCH can you either open an ICM on the team asking them to add an update restriction to their metadata, or open an issue in the metadata repo to do so please?

dominique-lambert-OBS commented 2 weeks ago

Hello @shemogumbe Can you take a look before the bot closes the case? Best regards Dominique

shemogumbe commented 1 week ago

Blocked by https://github.com/microsoftgraph/msgraph-metadata/issues/676