//native
const graph = "https://graph.microsoft.com/v1.0"
export type DynSelect_site_id = string
export async function site_id(auth: RT.MsSharepoint) {
const response = await fetch(
`${graph}/sites?search=*&$select=id,displayName,webUrl&$top=200`,
{
headers: {
Authorization: `Bearer ${auth.token}`,
Accept: "application/json",
},
}
)
if (!response.ok) {
throw new Error(`${response.status} ${await response.text()}`)
}
const { value } = (await response.json()) as {
value: { id: string; displayName: string; webUrl: string }[]
}
return value.map((s) => ({
value: s.id,
label: `${s.displayName} (${s.webUrl})`,
}))
}
export type DynSelect_list_id = string
export async function list_id(auth: RT.MsSharepoint, site_id: string) {
const response = await fetch(
`${graph}/sites/${site_id}/lists?$select=id,displayName`,
{
headers: {
Authorization: `Bearer ${auth.token}`,
Accept: "application/json",
},
}
)
if (!response.ok) {
throw new Error(`${response.status} ${await response.text()}`)
}
const { value } = (await response.json()) as {
value: { id: string; displayName: string }[]
}
return value.map((l) => ({ value: l.id, label: l.displayName }))
}
/**
* List Columns
* List a list's columns. A column's `name` is the internal name to use as a key in list item `fields` and in filters (`fields/<name>`); `displayName` is what the SharePoint UI shows. Requires Sites.Read.All (covered by the default Sites.ReadWrite.All).
*/
export async function main(
auth: RT.MsSharepoint,
site_id: DynSelect_site_id,
list_id: DynSelect_list_id
) {
const response = await fetch(
`${graph}/sites/${site_id}/lists/${list_id}/columns`,
{
headers: {
Authorization: `Bearer ${auth.token}`,
Accept: "application/json",
},
}
)
if (!response.ok) {
throw new Error(`${response.status} ${await response.text()}`)
}
return await response.json()
}
Submitted by hugo989 5 hours ago