Skip to content

Commit f4618bc

Browse files
Spucelikdlucesandrewconnell
authored
DTCChanges (SharePoint#10158)
* Modified the title * Adding a CT section * Merged billing into creating a new container type * Corrected validation checks * Implemented recommended changes based on the comments/feedback * Modified the authentication section with references to other docs. * Corrected link errors in the build report. * Replaced admin auth URL * Corrected the indenting level for pass through billing * Improve docs for container type registration * markdown & grammar fixes - always use `1.` for numbered bullets; let the markdown rendering engine insert the numbers - always seperate headings & paragraphs with newlines (not adjacent) --------- Co-authored-by: Diego Luces <[email protected]> Co-authored-by: Andrew Connell <[email protected]>
1 parent 44878ca commit f4618bc

File tree

5 files changed

+126
-17
lines changed

5 files changed

+126
-17
lines changed

docs/embedded/getting-started/containertypes.md

Lines changed: 101 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
2-
title: SharePoint Embedded Container Types
3-
description: This article explains how Container Types work.
2+
title: Create New SharePoint Embedded Container Types
3+
description: This article explains how Container Types work and the steps to create new Container Types.
44
ms.date: 03/03/2025
55
ms.localizationpriority: high
66
---
@@ -15,27 +15,64 @@ Container type is represented on each container instance as an immutable propert
1515

1616
- **Access authorization**: A SharePoint Embedded application must be associated with a container type to get access to container instances of that type. Once associated, the application has access to all container instances of that type. The actual access privilege is determined by the application-ContainerTypeID permission setting. The owning application by default has full access privilege to all container instances of the container type it's strongly coupled with. Learn more about [SharePoint Embedded Authorization](../development/auth.md).
1717
- **Easy exploration**: Container type can be created for trial purposes, allowing developers to explore SharePoint Embedded application development and assess its features for free.
18-
- **Billing**: Container types for non-trial purposes are billable and must be created with an Azure Subscription. The usage of containers is metered and charged. Learn more about [metering](../administration/billing/meters.md) and the [SharePoint Embedded billing experience](../administration/billing/billing.md).
18+
- **Billing**: Container types for non-trial purposes are billable and must be created with an Azure Subscription. The usage of containers is metered and charged. Learn more about [metering](../administration/billing/meters.md) and the [SharePoint Embedded billing experience](../administration/billing/billingmanagement.md).
1919
- **Configurable behaviors**: Container type defines selected behaviors for all container instances of that type. Learn more about setting [Container type configuration](../getting-started/containertypes.md#configuring-container-types).
2020

2121
> [!NOTE]
2222
>
2323
> 1. You must specify the purpose of the container type you're creating at creation time. Depending on the purpose, you may or may not need to provide your Azure Subscription ID. A container type set for trial purposes can't be converted for production; or vice versa.
24+
> 1. Standard and pass through container types can't be converted once created. If you want to convert a standard container type to pass through billing or vice versa, you must delete and re-create the container type.
2425
> 1. You must use the latest version of SharePoint PowerShell to configure a container type. For permissions and the most current information about Windows PowerShell for SharePoint Embedded, see the documentation at [Intro to SharePoint Embedded Management Shell](/powershell/sharepoint/sharepoint-online/introduction-sharepoint-online-management-shell).
2526
26-
## Trial use
27+
## Creating Container Types
28+
29+
SharePoint Embedded has 2 different Container Types you can create.
30+
31+
1. [Trial Container Type](#trial-container-type)
32+
1. [Standard Container Type](#standard-container-types-non-trial)
33+
34+
### Prerequisites to create SharePoint Embedded container type
35+
36+
A new container type will be created using **SharePoint Online Management Shell**:
37+
38+
1. Download and install the [latest version of SharePoint Online Management Shell](https://www.microsoft.com/download/details.aspx?id=35588)
39+
1. Open SharePoint Online Management Shell from **Start** screen, type **sharepoint**, and then select **SharePoint Online Management Shell**.
40+
1. Connect to SPO service using `Connect-SPOService` cmdlet by providing admin credentials associated with tenancy. For information on [how to use Connect-SPOService](/powershell/module/sharepoint-online/connect-sposervice), refer the linked documentation.
41+
42+
### Tenant requirements
43+
44+
- An active instance of SharePoint is required in your Microsoft 365 tenant.
45+
- Users who will be authenticating into SharePoint Embedded Container Types and Containers must be in Entra ID (Members and Guests)
46+
47+
> [!NOTE]
48+
> An Office license is not required to collaborate on Microsoft Office documents stored in a container.
49+
50+
### Roles and Permissions
51+
52+
- The admin who sets up the billing relationship for SharePoint Embedded needs to have owner or contributor permissions on the Azure subscription.
53+
- Admin needs to have a SharePoint Embedded Administrator or Global Admin role to operate billing cmdlets.
54+
55+
### Azure Subscription
56+
57+
For the standard billing container type, the global administrator or SharePoint Embedded Administrator needs to set up:
58+
59+
- An existing SharePoint tenancy
60+
- An Azure subscription in the tenancy
61+
- A resource group attached to the Azure subscription
62+
63+
## Trial Container Type
2764

2865
A container type can be created for trial/development purposes and isn't linked to any Azure billing profile. This enables developers to explore SharePoint Embedded application development and assess its features for free. For trial container types, the developer tenant is the same as the consuming tenant.
2966
Each developer can have only one container type in the trial status in their tenant at a time. The trial container type is valid for up to 30 days but can be removed at any time within this period.
3067

3168
To create a container type for trial purposes, you can:
3269

3370
- Use SharePoint Embedded Visual Studio Code Extension to create the container type in just a few steps. The Visual Studio Code extension registers your container type and creates containers for you.
34-
- Use SharePoint PowerShell. You must be a SharePoint Embedded Administrator or Global Administrator to run this cmdlet. If you're a SharePoint Administrator, grant yourself the SharePoint Embedded Admin role as well to execute these cmdlets.
71+
- Use SharePoint PowerShell. You must be a SharePoint Embedded Administrator or Global Administrator to run the following cmdlet. If you're a SharePoint Administrator, grant yourself the SharePoint Embedded Admin role as well to execute these cmdlets.
3572

36-
```powershell
37-
New-SPOContainerType [–TrialContainerType] [-ContainerTypeName] <String> [-OwningApplicationId] <String> [-ApplicationRedirectUrl] <String> [<CommonParameters>]
38-
```
73+
```powershell
74+
New-SPOContainerType [–TrialContainerType] [-ContainerTypeName] <String> [-OwningApplicationId] <String> [-ApplicationRedirectUrl] <String> [<CommonParameters>]
75+
```
3976
4077
The following restrictions are applied to trial container types:
4178
@@ -45,36 +82,84 @@ The following restrictions are applied to trial container types:
4582
- The developer must permanently delete all containers of an existing container type in trial status to create a new container type for trial. This includes containers in the deleted container collection.
4683
- The container type is restricted to work in the developer tenant. It can't be deployed in other consuming tenants.
4784
48-
## Standard/Non-trial use
85+
## Standard Container Types (non-trial)
86+
87+
A standard container type in SharePoint Embedded defines the relationship, access privileges, and billing profile between an application and its containers. It establishes how the application interacts with the containers, including access permissions, and is associated with a billing profile for non-trial purposes. Each tenant can have 5 container types at a time.
88+
89+
### Billing profile
90+
91+
SharePoint Embedded is a consumption-based Pay-as-you-go (PAYG) offering meaning you pay only for what you use. SharePoint Embedded provides two billing models that the tenant developing the SharePoint Embedded application can select for respective container types, tailoring it to their unique business requirements. The two billing models are Standard and Pass-through billing.
4992
50-
A standard container type is linked to a billing profile, which can be regular or direct-to-consumer billing. Each developer tenant can create up to five standard container types.
51-
Standard container types are created using the [New-SPOContainerType](/powershell/module/sharepoint-online/new-spocontainertype) cmdlet. For container types with regular billing, create a billing profile using the [Add-SPOContainerTypeBilling](/powershell/module/sharepoint-online/add-spocontainertypebilling) cmdlet. For container types with direct to customer billing, use the flag `-IsPassThroughBilling`. For the direct to customer billed container type, there's no need to attach a billing profile.
93+
### Standard Container Type - with billing profile
94+
95+
With the standard billing profile, all consumption-based charges are directly billed to the tenant who owns or develops the application. The admin in the developer tenant must establish a valid billing profile when creating a standard container type.
96+
97+
![Standard](../images/1bill521.png)
98+
99+
Each developer tenant can create up to five container types consisting of 1 trial container type and 4 standard container types or 5 standard container types.
100+
Standard container types are created using the [New-SPOContainerType](/powershell/module/sharepoint-online/new-spocontainertype) cmdlet.
52101
53102
You need the following to create a standard container type:
54103
55104
- Use SharePoint PowerShell. You must be a SharePoint Embedded Administrator or Global Administrator to run this cmdlet. If you're a SharePoint Administrator, grant yourself the SharePoint Embedded Admin role as well to execute these cmdlets.
56105
- An Azure subscription and a resource group must be present in the Azure portal for regular billing.
57106
- An App registration must be created in Microsoft Entra ID.
58107
59-
To create a standard container type with a regular billing profile, use the following cmdlets:
108+
To create a standard container type using an Azure billing profile, use the following cmdlets:
60109
61110
```powershell
62111
New-SPOContainerType [-ContainerTypeName] <String> [-OwningApplicationId] <String> [-ApplicationRedirectUrl] <String> [<CommonParameters>]
63112
```
64113

114+
Once the container type is created, add the Azure billing profile.
115+
65116
```powershell
66117
Add-SPOContainerTypeBilling –ContainerTypeId <ContainerTypeId> -AzureSubscriptionId <AzureSubscriptionId> -ResourceGroup <ResourceGroup> -Region <Region>
67118
```
68119

69120
> [!NOTE]
70121
> The user or admin who sets up a billing relationship for SharePoint Embedded must have owner or contributor permissions on the Azure subscription.
122+
>
123+
> Every container type must have an owning application.
124+
>
125+
> A single-owning app can only own one container type at a time.
126+
>
127+
> An Azure subscription can be attached to any number of container types.
128+
>
129+
> If the cmdlet above fails with a SubscriptionNotRegistered error, it is because **Microsoft.Syntex** is not registered as a resource provider in the subscription. The cmdlet will send a resource provider registration request on your behalf but it will take a few minutes to be completed. Please wait 5-10 minutes and try again until the cmdlet succeeds.
130+
131+
### Standard Container Type - pass-through billing
132+
133+
With pass-through billing, consumption-based charges are billed directly to the tenant registered to use the SharePoint Embedded application (consuming tenant). Admins in the developer tenant don't need to set up an Azure billing profile when creating a pass-through SharePoint Embedded container type.
71134

72-
To create a direct to customer billed, standard container type, use the following cmdlet:
135+
![Pass Through](../images/2bill521.png)
136+
137+
For container types intended to be directly billed to a customer use the flag `-IsPassThroughBilling`. For the direct to customer billed container type, there's no need to attach a billing profile.
138+
139+
To create a pass through billing, standard container type, use the following cmdlet:
73140

74141
```powershell
75142
New-SPOContainerType [-ContainerTypeName] <String> [-OwningApplicationId] <String> [-ApplicationRedirectUrl] <String> [-IsPassThroughBilling] [<CommonParameters>]
76143
```
77144

145+
Once the container type is [registered](../getting-started/register-api-documentation.md) in the consuming tenant, the consuming tenant admin (SharePoint Admin or Global Admin) needs to set up the billing profile in the consuming tenant to use the SharePoint Embedded application.
146+
147+
#### Set Up Billing Profile in Consuming Tenant
148+
149+
1. In [Microsoft 365 admin center](https://admin.microsoft.com/), select **Setup**, and the view the **Billing and licenses** section. Select **Activate pay-as-you-go services.**
150+
151+
![Microsoft 365 admin center Files and Content](../images/SyntexActivatePAYGSetup.png)
152+
153+
1. Select **Go to Pay as you go services**.
154+
1. Select **Apps** under **Syntex services for**, select **Apps** and **SharePoint Embedded**
155+
156+
![Microsoft 365 admin center SharePoint Embedded Billing setting](../images/SyntexPAYGActivateSPE.png)
157+
158+
> [NOTE]
159+
The subscription configured in the Syntex services will reflect the consuming charges in the Azure billing portal.
160+
161+
1. [Register the container type](#registering-container-types) using the App only authentication token.
162+
78163
## Configuring Container Types
79164

80165
The Developer Admin can set selected settings on the SharePoint Embedded container types created by using this PowerShell cmdlet.
@@ -117,3 +202,6 @@ Once all the containers are deleted, Developer admins can delete the container t
117202
```powershell
118203
Remove-SPOContainerType [-ContainerTypeId <ContainerTypeId>]
119204
```
205+
## SharePoint Embedded meters
206+
207+
To learn more about the supported pay-as-you-go meters, refer to the [SharePoint Embedded meters](../administration/billing/meters.md) article.

docs/embedded/getting-started/register-api-documentation.md

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,31 @@ Since the registration API controls the permissions that a SharePoint Embedded a
1313

1414
There are no restrictions on how many times the registration API can be invoked. How often the registration API is invoked and when it's invoked is dependent on the SharePoint Embedded application. However, the last successful call to the registration API determines the settings used in the consuming tenant.
1515

16+
## Authentication and authorization requirements
17+
18+
For the container type's owning application to act on a consuming tenant, some pre-requisites must be completed:
19+
20+
- the owning app must have a service principal installed on the consuming tenant; and
21+
- the owning app must be granted admin consent to perform container type registration in the consuming tenant.
22+
1623
> [!NOTE]
1724
> Only the owning application of the container type can invoke the registration API in the consuming tenant.
18-
>
19-
> The registration API is **NOT** a Graph API and can only be invoked using an AppOnly and a cert-based access token. Learn more about [authentication](../development/auth.md).
25+
26+
Both requirements can be satisfied by having a tenant administrator of the consuming tenant [grant admin consent](/entra/identity/enterprise-apps/grant-admin-consent?pivots=portal) to the container type's owning application.
27+
28+
The container type registration API requires the `Container.Selected` app-only permission for SharePoint (see [Exceptional access patterns](../development/auth.md#exceptional-access-patterns)). You will need to use the [client credentials grant flow](/entra/identity-platform/v2-oauth2-client-creds-grant-flow) and [request a token with a certificate](/entra/identity-platform/v2-oauth2-client-creds-grant-flow#second-case-access-token-request-with-a-certificate) to use the registration API.
29+
30+
> [!NOTE]
31+
> The registration API is **NOT** a Microsoft Graph API but a SharePoint API. This API will be ported to Microsoft Graph in the future.
32+
33+
To request admin consent from a tenant administrator in the consuming tenant, you may direct them to the [admin consent endpoint](/entra/identity-platform/v2-admin-consent). For the right endpoints on national clouds, see [Microsoft identity platform endpoints on national clouds](/entra/identity-platform/authentication-national-cloud#microsoft-entra-authentication-endpoints):
34+
35+
```http
36+
https://login.microsoftonline.com/<ConsumingTenantID>/adminconsent?client_id=<OwningTenantClientID>
37+
```
38+
39+
You may configure the admin consent endpoint to fit your needs, including handling errors and successful grants. For more information, see [Admin consent URI](/entra/identity-platform/v2-admin-consent).
40+
2041

2142
## Container type Permissions
2243

@@ -67,7 +88,7 @@ If successful, this method returns a `200 OK` response code and the container ty
6788

6889
## Examples
6990

70-
### Register the container type in a consuming tenant
91+
### Register the container type in a consuming tenant with permissions only for the Owning App
7192

7293
Register the container type in the consuming tenant and grant full permissions to the Owning Application (AppId 71392b2f-1765-406e-86af-5907d9bdb2ab) for Delegated and AppOnly calls.
7394

docs/embedded/getting-started/spembedded-for-vscode.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ If you don't already have a tenant, you can get a tenant through the [Microsoft
3737

3838
## Create a container type with a trial configuration
3939

40-
Once signed in, you are prompted to create a [container type with trial configuration](./containertypes.md#trial-use). A container type lets you get started calling SharePoint Embedded APIs and building a proof-of-concept application using SharePoint Embedded. Learn more about [container types](containertypes.md).
40+
Once signed in, you are prompted to create a [container type with trial configuration](./containertypes.md#trial-container-type). A container type lets you get started calling SharePoint Embedded APIs and building a proof-of-concept application using SharePoint Embedded. Learn more about [container types](containertypes.md).
4141

4242
![home screen](../images/vsx-images/n4vsx-home-screen.png)
4343

Loading
86.8 KB
Loading

0 commit comments

Comments
 (0)