microsoftgraph / microsoftgraph/msgraph-sdk-java

SDK returns site `name` inconsistently: sometimes same as `displayName` instead of correct value and sometimes the correct value

Aperta
#2,345 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

status:waiting-for-triage type:bug
Lingua principale
Java
Stelle
444
Fork
154
Merge medio
18h 28m
PR unite (30g)
4

Descrizione

Describe the bug

Doing different site lists returns different values in the name field.

Doing a search limited to a smaller set of sites returns the correct / expected value in the name field.

Doing a list of all sites returns the displayName in the name field.

Expected behavior

The SDK should return values in the name field consistently.

How to reproduce
  1. Return sites using this code:
graphClient.sites().get()

The return value in the MSGraph API response is:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites",
  "value": [
    {
      "createdDateTime": "2025-03-31T16:03:30Z",
      "id": "mytenant.sharepoint.com,d0536e25-0c9c-4a9c-b879-cefdc46dc82d,9f7ed8fa-4175-4a6c-80ae-2e19f19f5948",
      "name": "Test Site Many Names Site Info Name",
      "webUrl": "https://mytenant.sharepoint.com/sites/TestSiteManyNames",
      "displayName": "Test Site Many Names Site Info Name",
      "isPersonalSite": false,
      "siteCollection": {
        "hostname": "mytenant.sharepoint.com"
      },
      "root": {}
    },
    {
      "createdDateTime": "2025-02-23T17:46:07Z",
      "id": "mytenant.sharepoint.com,c65bebd0-1a50-4d31-8ef8-51d067f95ca8,00577abf-eccb-44ae-ba22-1542cc3249e3",
      "name": "Apps",
      "webUrl": "https://mytenant.sharepoint.com/sites/appcatalog",
      "displayName": "Apps",
      "isPersonalSite": false,
      "siteCollection": {
        "hostname": "mytenant.sharepoint.com"
      },
      "root": {}
    },
    {
      "createdDateTime": "2025-02-20T01:38:39Z",
      "id": "mytenant.sharepoint.com,09ed6654-3505-4561-a2e7-8d2776480abb,4d074863-0c38-46e8-b60a-156446947967",
      "name": "Team Site",
      "webUrl": "https://mytenant.sharepoint.com/sites/contentTypeHub",
      "displayName": "Team Site",
      "isPersonalSite": false,
      "siteCollection": {
        "hostname": "mytenant.sharepoint.com"
      },
      "root": {}
    },
    {
      "createdDateTime": "2025-02-20T01:38:32Z",
      "id": "mytenant.sharepoint.com,ff2ad436-8677-4cfb-91d6-67d7344474a0,9fda6e4f-a65f-4cc1-ba2b-3d11d30dccd7",
      "webUrl": "https://mytenant.sharepoint.com/search",
      "isPersonalSite": false,
      "siteCollection": {
        "hostname": "mytenant.sharepoint.com"
      },
      "root": {}
    },
    {
      "createdDateTime": "2025-02-20T01:37:56Z",
      "id": "mytenant-my.sharepoint.com,5a898f19-31d7-4f38-abd7-d7342535cb7d,6baab3c4-1e9a-4c52-bf5d-49f46471726d",
      "name": "My Name",
      "webUrl": "https://mytenant-my.sharepoint.com/personal/myid_mytenant_com",
      "displayName": "My Name",
      "isPersonalSite": true,
      "siteCollection": {
        "hostname": "mytenant-my.sharepoint.com"
      },
      "root": {}
    },
    {
      "createdDateTime": "2025-02-20T01:35:31Z",
      "id": "mytenant.sharepoint.com,e24ba8dd-ec64-4930-b9d3-6a4a542d4114,e69c54e0-3df2-4d80-a2f9-48f75cc5a825",
      "name": "All Company",
      "webUrl": "https://mytenant.sharepoint.com/sites/allcompany",
      "displayName": "All Company",
      "isPersonalSite": false,
      "siteCollection": {
        "hostname": "mytenant.sharepoint.com"
      },
      "root": {}
    },
    {
      "createdDateTime": "2025-02-20T01:32:07Z",
      "id": "mytenant.sharepoint.com,e3bb292d-6bce-419a-8f50-c98b996d3b34,965c6dcd-d66f-4f05-b23a-5274bd961199",
      "name": "Communication site",
      "webUrl": "https://mytenant.sharepoint.com/",
      "displayName": "Communication site",
      "isPersonalSite": false,
      "siteCollection": {
        "hostname": "mytenant.sharepoint.com"
      },
      "root": {}
    }
  ]
}
  1. Return just one of the above sites, example here is the one with "Many" in the display name (Kotlin):
graphClient.sites().get {
  it.queryParameters.search = "Many"
}

and the return value in the MSGraph API response is now:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites",
  "value": [
    {
      "createdDateTime": "2025-03-31T16:03:30Z",
      "description": "Test Site Many Names Description",
      "id": "mytenant.sharepoint.com,d0536e25-0c9c-4a9c-b879-cefdc46dc82d,9f7ed8fa-4175-4a6c-80ae-2e19f19f5948",
      "lastModifiedDateTime": "2025-03-31T16:03:38Z",
      "name": "TestSiteManyNames",
      "webUrl": "https://mytenant.sharepoint.com/sites/TestSiteManyNames",
      "displayName": "Test Site Many Names Site Info Name",
      "root": {},
      "siteCollection": {
        "hostname": "mytenant.sharepoint.com"
      }
    }
  ]
}

Note the difference in the Name fields. The first response contains "name": "Test Site Many Names Site Info Name" while the second response contains "name": "TestSiteManyNames".

Note also that the second response does not contain isPersonalSite: false (even if isPersonalSite is requested explicitly via $select).

SDK Version

6.33.0

Latest version known to work for scenario above?

No response

Known Workarounds

Extract the last path segment from the webUrl field to get the name consistently, after filtering out the root site.

Debug output

No response

Configuration

No response

Other information

No response

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia dal punto di ingresso graphClient.sites().get() e confronta il modo in cui l’SDK rappresenta le due risposte acquisite di Microsoft Graph, inclusi name e isPersonalSite. Usa le risposte di elenco e di ricerca riportate per definire la coerenza prevista; il lavoro è completato quando l’SDK espone valori stabili per entrambi i campi oppure documenta chiaramente una limitazione upstream.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java, kotlin
Ambito
api, backend
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
42/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.