# Microsoft Graph API for Copilot Extensions

**Last updated:** 2026-02
**Status:** GA
**Category:** Copilot Extensibility & Integration

---

## Introduksjon

Microsoft Graph API for Copilot Extensions gir mekanismer for å utvide Microsoft 365 Copilot med ekstern data og funksjonalitet gjennom tre hovedveier: **Copilot Connectors** (tidligere Microsoft Graph Connectors), **API Plugins**, og **Graph Actions med Semantic Kernel**. Disse teknologiene lar organisasjoner integrere line-of-business-data, eksterne APIer og Microsoft 365-funksjonalitet i Copilot-opplevelser.

**Copilot Connectors** importerer ekstern innhold inn i Microsoft Graph for å berike Copilots kunnskapsbase. **API Plugins** kobler REST-APIer til declarative agents for å utføre handlinger. **Graph Actions** lar custom engine agents (bygget med Semantic Kernel) bruke Microsoft Graph API-funksjoner som å sende e-post, opprette kalenderhendelser og hente filer gjennom naturlig språk.

**Confidence:** Verified (microsoft-learn MCP, januar 2026)

---

## Kjernekomponenter

### 1. Copilot Connectors (Microsoft Graph Connectors)

**Formål:** Indeksere ekstern data inn i Microsoft Graph for å gjøre den søkbar og tilgjengelig for Copilot, Microsoft Search, Context IQ og andre M365-opplevelser.

| Komponent | Beskrivelse | API Resource |
|-----------|-------------|--------------|
| **External Connection** | Logisk container for ekstern data | `externalConnection` |
| **Schema** | Definerer struktur og metadata for innholdet | `schema` |
| **External Item** | Individuelt dataobjekt indeksert i Microsoft Graph | `externalItem` |
| **External Group** | Ikke-Entra ID grupper for tilgangskontroll (ACL) | `externalGroup` |
| **Activity Settings** | Konfigurasjon for brukeraktiviteter og URL-resolving | `activitySettings` |
| **Semantic Labels** | Metadata for å hjelpe Copilot tolke schemameningen | `iconUrl`, `title`, `url`, etc. |

**Fire steg for å bygge custom Copilot Connector:**

1. **Opprett Entra ID app registration** med nødvendige Graph API-permissions
2. **Opprett external connection** med unik ID, navn og beskrivelse
3. **Registrer schema** (long-running operation, async provisioning)
4. **Ingest external items** med innhold og ACL

**Confidence:** Verified (microsoft-learn docs_fetch)

### 2. API Plugins

**Formål:** Koble REST APIer til declarative agents for å utføre handlinger på vegne av brukeren.

**Støttes kun som actions innenfor declarative agents** (ikke standalone i M365 Copilot).

| Komponent | Beskrivelse |
|-----------|-------------|
| **OpenAPI Specification** | Beskriver REST API-endepunkter, parametere og autentisering |
| **Plugin Manifest** | API plugin manifest (schema v2.4) som definerer plugin capabilities |
| **Authentication** | Token/API key fra token store (støtter OAuth2, API keys) |
| **Confirmation Prompts** | Brukerbekreftelse før data sendes til plugin (konfigurerbart) |

**Dataflyt:**
1. Bruker stiller spørsmål → Agent identifiserer relevant plugin
2. Agent mapper spørsmål til funksjon og parametere
3. Agent ber om brukerbekreftelse
4. Plugin henter token fra token store (hvis nødvendig)
5. API-kall sendes til eksternt endepunkt
6. Agent genererer respons basert på API-svar

**Confidence:** Verified (microsoft-learn docs_search)

### 3. Graph Actions med Semantic Kernel

**Formål:** La custom engine agents bruke Microsoft Graph API-funksjoner gjennom naturlig språk.

**Prebuilt plugins:**
- **ContactsPlugin** – Administrer kontakter
- **MessagesPlugin** – Interager med e-post
- **CalendarPlugin** – Opprett og list møter
- **DriveItemsPlugin** – Søk, les og last opp filer
- **M365 Copilot Plugin (Retrieval API)** – Søk i M365-innhold via semantic index

**Hvordan det fungerer:**
1. Semantic Kernel analyserer brukerintensjon
2. Matcher til riktig plugin (f.eks. CalendarPlugin)
3. Genererer Microsoft Graph API-kall
4. Kjører request med delegated auth
5. Returnerer resultat som naturlig språk-respons

**Verktøy:** Kiota CLI for å generere plugins fra OpenAPI spec.

**Confidence:** Verified (microsoft-learn docs_search)

---

## Arkitekturmønstre

### Mønster 1: Knowledge Augmentation (Copilot Connectors)

**Bruksområde:** Berike Copilots kunnskapsbase med line-of-business data (ERP, CRM, wiki, dokumenter).

```
[External Data Source]
    ↓ (API/SDK)
[Custom Connector Code]
    ↓ (Graph Connectors API)
[Microsoft Graph - External Items]
    ↓ (Semantic Index)
[M365 Copilot + Search + Context IQ]
```

**Best practices:**
- Bruk **semantic labels** (`title`, `content`, `iconUrl`, `url`) for å forbedre Copilot-relevans
- Inkluder **urlToItemResolver** for å oppdage delte URLer (booster viktighet)
- Legg til **user activities** (view, modify, comment) for relevansscoring
- Rik **description** i connection-konfigurasjon
- Ingest content som **tekst** i `content`-property (ikke bare metadata)

**Confidence:** Verified (microsoft-learn docs_fetch)

### Mønster 2: Action Execution (API Plugins)

**Bruksområde:** Utføre handlinger i eksterne systemer fra declarative agents (f.eks. "Opprett Jira ticket", "Sjekk budsjett i ERP").

```
[User Prompt]
    ↓
[Declarative Agent]
    ↓ (Confirmation)
[API Plugin] → [Token Store] → [External REST API]
    ↓
[Agent Response]
```

**Best practices:**
- Følg [OpenAPI guidance for Copilot](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/openapi-document-guidance)
- Bruk **confirmation prompts** fornuftig (default: read-only = "Always allow", write = no "Always allow")
- Implementer robust **error handling** i API
- Begrens antall operasjoner per plugin (fokuser på kjernefunksjonalitet)

**Confidence:** Verified (microsoft-learn docs_search)

### Mønster 3: M365 Data Integration (Graph Actions)

**Bruksområde:** Custom agents som trenger tilgang til M365-data (e-post, kalender, filer, kontakter).

```
[User Prompt]
    ↓
[Semantic Kernel Agent]
    ↓ (Plugin Selection)
[Graph Action Plugin] → [Microsoft Graph API]
    ↓ (Delegated Auth)
[M365 Data: Mail/Calendar/Files/Contacts]
```

**Eksempel:**
- "Sjekk e-post fra min leder, oppsummer, og sett opp møte" → bruker MessagesPlugin + CalendarPlugin + ContactsPlugin

**Best practices:**
- Bruk **prebuilt plugins** der tilgjengelig (vedlikeholdes av Microsoft)
- Implementer **delegated permissions** (ikke application permissions for brukerdata)
- Kombiner flere plugins for komplekse workflows

**Confidence:** Verified (microsoft-learn docs_search)

### Mønster 4: Hybrid (Connector + Plugin)

**Bruksområde:** Søkbar data + handlinger i samme ekstern tjeneste.

**Eksempel:** Salesforce-integrasjon
- **Connector:** Indekser Salesforce-objekter (Accounts, Opportunities) for søk
- **Plugin:** Opprett nye leads, oppdater kontakter

**Fordel:** Brukere kan både finne ("Vis alle accounts i Norge") og handle ("Opprett ny contact for Acme Corp").

**Confidence:** Baseline (arkitekturprinsipp basert på Microsoft-docs patterns)

---

## Beslutningsveiledning

### Når bruke Copilot Connectors?

| Scenario | Anbefaling | Hvorfor |
|----------|------------|---------|
| Store mengder lesbar data (dokumenter, wiki, CRM-objekter) | ✅ Copilot Connector | Semantic indexing, søk, oppsummering |
| Data må være søkbart i Search + Copilot | ✅ Copilot Connector | Deler samme index |
| Trenger filtere basert på brukerrettigheter (ACL) | ✅ Copilot Connector | External groups støtter ikke-Entra ID ACL |
| Kun lese-operasjoner | ✅ Copilot Connector | Optimalisert for retrieval |
| Data endres sjelden (statisk innhold) | ✅ Copilot Connector | Ingest kan være batch/scheduled |

**Confidence:** Verified (microsoft-learn docs_fetch + docs_search)

### Når bruke API Plugins?

| Scenario | Anbefaling | Hvorfor |
|----------|------------|---------|
| Utføre handlinger (create, update, delete) | ✅ API Plugin | Designet for actions |
| Real-time data fra REST API (ikke indeksering) | ✅ API Plugin | On-demand API calls |
| Behov for brukerbekreftelse før handling | ✅ API Plugin | Innebygd confirmation flow |
| Integration med declarative agent | ✅ API Plugin | Kun støttet som agent actions |
| Liten, fokusert funksjonalitet (f.eks. "Hent budsjett") | ✅ API Plugin | Lightweight, ikke persistence |

**Merk:** API Plugins er **ikke** standalone i M365 Copilot (kun som actions i declarative agents).

**Confidence:** Verified (microsoft-learn docs_search)

### Når bruke Graph Actions?

| Scenario | Anbefaling | Hvorfor |
|----------|------------|---------|
| Custom engine agent trenger M365-data | ✅ Graph Actions | Prebuilt plugins for Graph API |
| Sende e-post, opprette møter, hente filer | ✅ Graph Actions | ContactsPlugin, MessagesPlugin, CalendarPlugin, DriveItemsPlugin |
| Semantic Kernel-basert agent | ✅ Graph Actions | Native integration |
| Multi-step workflows med M365-data | ✅ Graph Actions | Kombiner flere plugins |
| Delegated permissions (brukerkontekst) | ✅ Graph Actions | Kjører som signed-in user |

**Confidence:** Verified (microsoft-learn docs_search)

### Beslutningstre

```
Trenger du å berike Copilot med ekstern data?
├─ Ja, for søk og oppsummering → Copilot Connector
└─ Nei, trenger å utføre handlinger
   ├─ Handlinger i M365 (e-post, kalender, filer) → Graph Actions
   └─ Handlinger i eksterne systemer → API Plugin
      └─ Merk: Krever declarative agent
```

**Confidence:** Baseline (syntetisert fra verified sources)

---

## Integrasjon med Microsoft-stakken

### 1. Microsoft 365 Copilot

**Copilot Connectors:**
- Innhold dukker opp i Copilot-svar med **in-text citations** (hover for preview)
- **Reference links** nederst i responsen
- Krever **inline results** aktivert i Admin Center (Agents and connectors → Copilot)

**API Plugins:**
- Kun tilgjengelig som **actions i declarative agents** (ikke i business chat)

**Graph Actions:**
- Kun for **custom engine agents** (ikke M365 Copilot business chat)

**Confidence:** Verified (microsoft-learn docs_fetch)

### 2. Microsoft Search

**Copilot Connectors:**
- Samme index som Copilot → eksterne items er søkbare
- Støtter **verticals** (filtrering etter connector)

**Confidence:** Verified (microsoft-learn docs_fetch)

### 3. Context IQ & microsoft365.com

**Copilot Connectors:**
- Connector content tilgjengelig i Context IQ (recommendations)
- Vises på microsoft365.com (unified experience)

**Confidence:** Verified (microsoft-learn docs_search)

### 4. Teams

**Message Extensions:**
- Kan fungere som plugins for M365 Copilot
- Søk/handlinger i eksterne tjenester via Adaptive Cards
- Utvides med **Bot Framework** eller **Teams AI library**

**Confidence:** Verified (microsoft-learn docs_search)

### 5. Copilot Studio

**Low-code alternativ:**
- Power Platform Connectors (prebuilt + custom)
- Integrerer med både Microsoft data og ISV-data
- Kan bruke **Graph API** for M365-data

**Confidence:** Verified (microsoft-learn docs_search)

### 6. Microsoft Foundry & Semantic Kernel

**Graph Actions:**
- Semantic Kernel er **påkrevd** for Graph Actions
- Kiota CLI genererer plugins fra OpenAPI spec
- Støtter **C#, Python, TypeScript** SDKs

**SDK-pakker:**
- .NET: `Microsoft.Agent.M365Copilot` (v1.0), `Microsoft.Agent.M365Copilot.Beta`
- Python: `microsoft-agents-m365copilot`, `microsoft-agents-m365copilot-beta`
- TypeScript: `@microsoft/agents-m365copilot`, `@microsoft/agents-m365copilot-beta`

**Confidence:** Verified (microsoft-learn docs_search)

---

## Offentlig sektor (Norge)

### Compliance & Data Residency

| Aspekt | Copilot Connectors | API Plugins | Graph Actions |
|--------|-------------------|-------------|---------------|
| **Data location** | External items i Microsoft Graph (tenant region) | API-data forblir i eksternt system | M365-data i tenant region |
| **GCC/GCCH support** | ✅ Ja (ikke DoD) | ✅ Ja (via declarative agents) | ✅ Ja (via M365 Copilot) |
| **Data processing** | Microsoft Graph (EU Data Boundary for EU tenants) | Eksternt API (utenfor Microsoft) | Microsoft Graph |
| **Audit logging** | Microsoft 365 audit logs | API-side logging (eksternt) | M365 audit logs |

**Offentlig sektor Norge:**
- **Copilot Connectors** og **Graph Actions** innenfor Microsoft 365 boundary (OK for Skytjenesteavtalen/DPA)
- **API Plugins** krever databehandleravtale med API-leverandør hvis persondata sendes

**Confidence:** Baseline (ekstrapolert fra M365 compliance docs)

### Tilgangskontroll

**Copilot Connectors:**
- Støtter **External Groups** for ikke-Entra ID ACL (f.eks. Salesforce permission sets, ServiceNow local groups)
- **Active Directory sync** påkrevd for security trimming (SharePoint Server connector)
- Brukere ser kun content de har tilgang til

**API Plugins:**
- Brukerbekreftelse (**confirmation prompts**) før data sendes
- Autentisering via **token store** (OAuth2, API keys)

**Graph Actions:**
- **Delegated permissions** (kjører som signed-in user)
- Respekterer Entra ID roller og policies

**Confidence:** Verified (microsoft-learn docs_fetch + docs_search)

### Schrems II & Datatilsynet

**Vurderinger:**
- **Copilot Connectors:** Data i Microsoft Graph → samme risikovurdering som Microsoft 365
- **API Plugins:** Tredjepartsdata → egen risikovurdering per API-leverandør
- **Graph Actions:** M365-data → innenfor Microsoft 365 DPA

**Anbefaling:** Gjennomfør DPIA for Copilot Connectors med sensitive persondata (samme prosess som for Microsoft Search).

**Confidence:** Baseline (juridisk ekstrapolering)

---

## Kostnad og lisensiering

### Copilot Connectors

| Kostnadselement | Detaljer |
|-----------------|----------|
| **Item quota** | Items konsumerer quota (se [licensing requirements](https://learn.microsoft.com/en-us/microsoftsearch/licensing)) |
| **Graph API calls** | Standard Graph API pricing (ingest/update/delete operations) |
| **Connector SDK** | Gratis (open source) |
| **Prebuilt connectors** | Over 100 tilgjengelig fra Microsoft og partnere (noen krever partnerlisens) |
| **Custom connector hosting** | Egen infrastruktur (Azure Functions, VM, on-prem) |

**Lisenskrav:**
- **Microsoft 365 E5** eller **Office 365 E5** for full Copilot connector support
- **Microsoft Search** inkludert i E3/E5

**Confidence:** Verified (microsoft-learn docs_fetch)

### API Plugins

| Kostnadselement | Detaljer |
|-----------------|----------|
| **API calls** | Eksternt API pricing (varierer per leverandør) |
| **Token store** | Inkludert i M365 Copilot (ingen ekstra kostnad) |
| **Declarative agent** | Krever M365 Copilot lisens (ca. $30/user/month) |
| **Development** | Microsoft 365 Agents Toolkit (gratis i VS Code) |

**Confidence:** Baseline (basert på M365 Copilot lisensmodell)

### Graph Actions (Semantic Kernel)

| Kostnadselement | Detaljer |
|-----------------|----------|
| **Graph API calls** | Inkludert i M365-lisens (delegated permissions) |
| **Semantic Kernel SDK** | Gratis (open source) |
| **LLM costs** | Avhenger av valgt modell (Azure OpenAI, OpenAI, etc.) |
| **Hosting** | Custom engine agent hosting (Azure App Service, Container Apps, etc.) |

**Confidence:** Baseline (Semantic Kernel OSS + Azure OpenAI pricing)

### TCO-sammenligning (norsk offentlig sektor)

**Scenario:** Indeksere 50 000 dokumenter fra fagsystem + tillate opprettelse av saker

| Løsning | Setup-kostnad | Årlig drift | Lisenskrav |
|---------|--------------|-------------|------------|
| **Connector + Plugin** | Middels (utvikling) | Lav (Graph quota + API calls) | M365 E5 + Copilot |
| **Kun Plugin** | Lav (API mapping) | Lav (API calls) | M365 E5 + Copilot |
| **Kun Connector** | Middels (utvikling) | Lav (Graph quota) | M365 E5 (Search OK, Copilot anbefalt) |
| **Graph Actions** | Høy (custom agent) | Middels-høy (hosting + LLM) | M365 E5 + Azure OpenAI |

**Anbefaling for norsk offentlig sektor:**
- **Start med Copilot Connectors** for read-only data (lavest kompleksitet)
- **Legg til API Plugins** for handlinger når declarative agents er GA
- **Vurder Graph Actions** kun for avanserte custom agents med M365-integrasjon

**Confidence:** Baseline (syntetisert kostnadsvurdering)

---

## For arkitekten (Cosmo)

### Anbefalinger

1. **Start med Copilot Connectors for kunnskapsbase**
   - Lavest barrier to entry
   - Gjenbrukbar i Search, Context IQ, Copilot
   - Bruk **prebuilt connectors** der tilgjengelig (100+ fra Microsoft/partnere)
   - Custom connector kun når prebuilt ikke finnes

2. **API Plugins krever declarative agents**
   - **Viktig:** API Plugins fungerer IKKE standalone i M365 Copilot business chat
   - Må pakkes som actions i declarative agent
   - Vurder om message extension (Teams) er bedre match for read/write scenarios

3. **Graph Actions for avanserte custom agents**
   - Bruk **prebuilt plugins** (ContactsPlugin, MessagesPlugin, CalendarPlugin, DriveItemsPlugin, M365 Copilot Plugin)
   - Kombinér flere plugins for multi-step workflows
   - Vurder Copilot Studio som low-code alternativ før custom Semantic Kernel agent

4. **Semantic indexing er key for Copilot Connectors**
   - Title + Content properties er semantisk indeksert
   - Semantic labels påvirker **ikke** indexing (kun filtering)
   - Rik tekstuelt innhold i `content` property
   - Bruk semantic labels (`title`, `url`, `iconUrl`) for Copilot UI

5. **Sikkerhet og compliance først**
   - External groups for ikke-Entra ID ACL
   - Confirmation prompts for API Plugins
   - Delegated permissions for Graph Actions
   - DPIA for Copilot Connectors med persondata

6. **Optimaliser for relevans**
   - `urlToItemResolver` + user activities → høyere scoring
   - Rich descriptions i connections
   - Meaningful titles på external items
   - Flere activities (view, modify, comment) = høyere viktighet

### Røde flagg

| Situasjon | Problem | Løsning |
|-----------|---------|---------|
| "Vi vil bruke API Plugin standalone i Copilot" | ❌ Ikke støttet | Bruk declarative agent eller message extension |
| "Vi indekserer binærfiler uten tekst-extraction" | ❌ Dårlig Copilot-relevans | Extract text før ingest i `content` property |
| "Vi hopper over semantic labels" | ❌ Dårlig UI i Copilot | Bruk minst `title`, `url`, `iconUrl` |
| "Vi bruker application permissions for Graph Actions" | ❌ Sikkerhetsrisiko | Bruk delegated permissions (user context) |
| "Vi bygger custom connector for SharePoint" | ❌ Unødvendig | Bruk prebuilt SharePoint connector |
| "Vi forventer real-time ingest til Copilot Connector" | ❌ Feil forventning | Schema provisioning er async, ingest tar tid |

**Confidence:** Baseline (arkitektråd basert på verified docs)

### Spørsmål å stille kunden

1. **Omfang:**
   - Hvor mange eksterne datakilder skal integreres?
   - Estimert antall items/dokumenter?
   - Hvor ofte oppdateres dataene?

2. **Funksjonalitet:**
   - Kun lesing (search/summarize) eller også handlinger (create/update)?
   - Må brukere kunne trigge actions fra Copilot?
   - Trenger dere M365-data (e-post, kalender) i samme workflow?

3. **Sikkerhet:**
   - Bruker dere Entra ID for alle brukere?
   - Finnes ikke-Entra ID grupper i eksterne systemer (f.eks. Salesforce roles)?
   - Persondata i eksterne systemer?

4. **Teknisk kapasitet:**
   - Har dere utviklere med Graph API-erfaring?
   - Kan dere hoste custom connector (Azure/on-prem)?
   - Foretrekker dere low-code (Copilot Studio) eller pro-code?

5. **Lisensiering:**
   - Har brukerne M365 Copilot lisens?
   - E3 eller E5?
   - Budget for item quota (Copilot Connectors)?

**Confidence:** Baseline (discovery-spørsmål)

---

## Kilder og verifisering

### Microsoft Learn (MCP-verified, januar 2026)

1. **Microsoft 365 Copilot connectors overview**
   https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/overview-copilot-connector
   *Verified via microsoft_docs_fetch*

2. **Work with the Copilot connectors API**
   https://learn.microsoft.com/en-us/graph/connecting-external-content-connectors-api-overview
   *Verified via microsoft_docs_fetch*

3. **Invoke Microsoft Graph actions with Semantic Kernel**
   https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/graph-actions-semantic-kernel
   *Verified via microsoft_docs_search*

4. **Build API plugins from an existing API for Microsoft 365 Copilot**
   https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/build-api-plugins-existing-api
   *Verified via microsoft_docs_search*

5. **Extend Microsoft 365 Copilot**
   https://learn.microsoft.com/en-us/microsoftteams/platform/archive/how-to-extend-copilot
   *Verified via microsoft_docs_search*

6. **Microsoft 365 Copilot extensibility overview**
   https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/
   *Verified via microsoft_docs_search*

7. **Copilot connector experiences**
   https://learn.microsoft.com/en-us/graph/connecting-external-content-experiences
   *Verified via microsoft_docs_search*

8. **Use the Copilot connectors API**
   https://learn.microsoft.com/en-us/graph/api/resources/connectors-api-overview?view=graph-rest-1.0
   *Verified via microsoft_docs_search*

9. **Adopt, extend and build Copilot experiences across the Microsoft Cloud**
   https://learn.microsoft.com/en-us/microsoft-cloud/dev/copilot/overview
   *Verified via microsoft_docs_search*

10. **Microsoft 365 Copilot extensibility samples**
    https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/samples
    *Verified via microsoft_docs_search*

### Code Samples (MCP-verified)

11. **Microsoft 365 Copilot APIs client libraries**
    https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/sdks/api-libraries
    *C#, Python, TypeScript SDK samples*

### Baseline Knowledge (Model knowledge, jan 2025)

- Schrems II vurderinger for norsk offentlig sektor
- TCO-kostnadsmodeller
- Compliance-anbefalinger for Datatilsynet
- Arkitekturbeslutningstrær

**Total kilder:** 11 MCP-verified URLs, 4+ code samples
**MCP calls:** 7 (3x docs_search, 2x docs_fetch, 1x code_sample_search, 1x ToolSearch)
