Skip to content

Commit a308609

Browse files
authored
Merge pull request #178368 from dannyevers/57262-reimagine
Split the SaaS fulfillment APIs doc
2 parents e5280fe + 80de2c7 commit a308609

22 files changed

+559
-507
lines changed

articles/marketplace/.openpublishing.redirection.marketplace.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@
2020
"redirect_url": "/azure/marketplace/isv-app-license",
2121
"redirect_document_id": false
2222
},
23+
{
24+
"source_path_from_root": "/articles/azure/marketplace/partner-center-portal/pc-saas-fulfillment-api-v2.md",
25+
"redirect_url": "/azure/marketplace/partner-center-portal/pc-saas-fulfillment-apis",
26+
"redirect_document_id": false
27+
},
2328
{
2429
"source_path_from_root": "/articles/cloud-partner-portal/cloud-partner-portal-manage-publisher-profile.md",
2530
"redirect_url": "/azure/marketplace/partner-center-portal/create-account",

articles/marketplace/TOC.yml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -571,16 +571,24 @@
571571
href: marketplace-metering-service-apis-faq.yml
572572
- name: SaaS Fulfillment APIs
573573
items:
574-
- name: SaaS Fulfillment API overview
574+
- name: SaaS Fulfillment APIs overview
575575
href: partner-center-portal/pc-saas-fulfillment-apis.md
576576
- name: Register a SaaS application
577577
href: partner-center-portal/pc-saas-registration.md
578578
- name: SaaS Fulfillment APIs v2
579-
href: partner-center-portal/pc-saas-fulfillment-api-v2.md
580-
- name: SaaS Fulfillment APIs v1 (deprecated)
581-
href: partner-center-portal/pc-saas-fulfillment-api-v1.md
579+
items:
580+
- name: SaaS subscription life cycle
581+
href: partner-center-portal/pc-saas-fulfillment-life-cycle.md
582+
- name: Subscription APIs
583+
href: partner-center-portal/pc-saas-fulfillment-subscription-api.md
584+
- name: Operations APIs
585+
href: partner-center-portal/pc-saas-fulfillment-operations-api.md
586+
- name: Implement a webhook
587+
href: partner-center-portal/pc-saas-fulfillment-webhook.md
582588
- name: SaaS fulfillment APIs - FAQ
583589
href: partner-center-portal/saas-fulfillment-apis-faq.yml
590+
- name: SaaS Fulfillment APIs v1 (deprecated)
591+
href: partner-center-portal/pc-saas-fulfillment-api-v1.md
584592
- name: Resources
585593
items:
586594
- name: Commercial marketplace FAQ

articles/marketplace/azure-ad-saas.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ This table provides details for the purchase management process steps.
4848
| ------------ | ------------- | ------------- |
4949
| 1. The buyer signs in to the commercial marketplace with their Azure ID identity and selects a SaaS offer. | No publisher action required. | Not applicable |
5050
| 2. After purchasing, the buyer selects **Configure account** in Azure Marketplace or **Configure now** in AppSource, which directs the buyer to the publisher’s landing page for this offer. The buyer must be able to sign in to the publisher’s SaaS application with Azure AD SSO and must only be asked for minimal consent that does not require Azure AD administrator approval. | Design a [landing page](azure-ad-transactable-saas-landing-page.md) for the offer so that it receives a user with their Azure AD or Microsoft account (MSA) identity and facilitates any additional provisioning or setup that’s required. | Required |
51-
| 3. The publisher requests purchase details from the SaaS fulfillment API. | Using an [access token](./partner-center-portal/pc-saas-registration.md) generated from the landing page’s Application ID, [call the resolve endpoint](./partner-center-portal/pc-saas-fulfillment-api-v2.md#resolve-a-purchased-subscription) to retrieve specifics about the purchase. | Required |
51+
| 3. The publisher requests purchase details from the SaaS fulfillment API. | Using an [access token](./partner-center-portal/pc-saas-registration.md) generated from the landing page’s Application ID, [call the resolve endpoint](./partner-center-portal/pc-saas-fulfillment-subscription-api.md#resolve-a-purchased-subscription) to retrieve specifics about the purchase. | Required |
5252
| 4. Through Azure AD and the Microsoft Graph API, the publisher gathers the company and user details required to provision the buyer in the publisher’s SaaS application. | Decompose the Azure AD user token to find name and email, or [call the Microsoft Graph API](/graph/use-the-api) and use delegated permissions to [retrieve information](/graph/api/user-get) about the user who is logged in. | Required |
5353
||||
5454

@@ -62,7 +62,7 @@ This table describes the details about the subscription management process steps
6262

6363
| Process step | Publisher action | Recommended or required for publishers |
6464
| ------------ | ------------- | ------------- |
65-
| 5. The publisher manages the subscription to the SaaS application through the SaaS fulfillment API. | Handle subscription changes and other management tasks through the [SaaS fulfillment APIs](./partner-center-portal/pc-saas-fulfillment-api-v2.md).<br><br>This step requires an access token as described in process step 3. | Required |
65+
| 5. The publisher manages the subscription to the SaaS application through the SaaS fulfillment API. | Handle subscription changes and other management tasks through the [SaaS fulfillment APIs](./partner-center-portal/pc-saas-fulfillment-apis.md).<br><br>This step requires an access token as described in process step 3. | Required |
6666
| 6. When using metered pricing, the publisher emits usage events to the metering service API. | If your SaaS app features usage-based billing, make usage notifications through the [Marketplace metering service APIs](marketplace-metering-service-apis.md).<br><br>This step requires an access token as described in Step 3. | Required for metering |
6767
||||
6868

articles/marketplace/azure-ad-transactable-saas-landing-page.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ This enables the solution to work in scenarios that observe the [separation of c
7676

7777
## Resolve the marketplace purchase identification token
7878

79-
When the buyer is sent to your landing page, a token is added to the URL parameter. This token is different from both the Azure AD-issued token and the access token used for service-to-service authentication, and is used as an input for the [SaaS fulfillment APIs](./partner-center-portal/pc-saas-fulfillment-api-v2.md#resolve-a-purchased-subscription) resolve call to get the details of the subscription. As with all calls to the SaaS fulfillment APIs, your service-to-service request will be authenticated with an access token that is based on the app's Azure AD Application ID user for service-to-service authentication.
79+
When the buyer is sent to your landing page, a token is added to the URL parameter. This token is different from both the Azure AD-issued token and the access token used for service-to-service authentication, and is used as an input for the [SaaS fulfillment APIs](./partner-center-portal/pc-saas-fulfillment-subscription-api.md#resolve-a-purchased-subscription) resolve call to get the details of the subscription. As with all calls to the SaaS fulfillment APIs, your service-to-service request will be authenticated with an access token that is based on the app's Azure AD Application ID user for service-to-service authentication.
8080

8181
> [!NOTE]
8282
> In most cases, it's preferable to make this call from a second, single-tenant application. See [Use two Azure AD apps to improve security in production](#use-two-azure-ad-apps-to-improve-security-in-production) earlier in this article.
@@ -87,7 +87,7 @@ To authenticate your application with the SaaS fulfillment APIs, you need an acc
8787

8888
### Call the resolve endpoint
8989

90-
The SaaS fulfillment APIs implement the [resolve](./partner-center-portal/pc-saas-fulfillment-api-v2.md#resolve-a-purchased-subscription) endpoint that can be called to confirm the validity of the marketplace token and to return information about the subscription.
90+
The SaaS fulfillment APIs implement the [resolve](./partner-center-portal/pc-saas-fulfillment-subscription-api.md#resolve-a-purchased-subscription) endpoint that can be called to confirm the validity of the marketplace token and to return information about the subscription.
9191

9292
## Read information from claims encoded in the ID token
9393

articles/marketplace/create-new-saas-offer-technical.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ On the **Technical configuration** tab, you'll define the technical details that
2626
> [!IMPORTANT]
2727
> Your landing page should be up and running 24/7. This is the only way you will be notified about new purchases of your SaaS offers made in the commercial marketplace, or configuration requests of an active subscription of an offer. Don't include the pound sign character (#) in the landing page URL. Otherwise, customers will not be able to access your landing page.
2828
29-
- **Connection webhook** (required) – For all asynchronous events that Microsoft needs to send to you (for example, SaaS subscription has been canceled), we require you to [provide a connection webhook URL](./partner-center-portal/pc-saas-fulfillment-api-v2.md#implementing-a-webhook-on-the-saas-service). We will call this URL to notify you of the event.
29+
- **Connection webhook** (required) – For all asynchronous events that Microsoft needs to send to you (for example, SaaS subscription has been canceled), we require you to [provide a connection webhook URL](./partner-center-portal/pc-saas-fulfillment-webhook.md). We will call this URL to notify you of the event.
3030

3131
> [!IMPORTANT]
3232
> Your webhook should be up and running 24/7 as this is the only way you will be notified about updates about your customers' SaaS subscriptions that are purchased via the commercial marketplace.

articles/marketplace/index.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ landingContent:
117117
- text: API prerequisites
118118
url: cloud-partner-portal-api-prerequisites.md
119119
- text: SaaS fulfillment APIs
120-
url: partner-center-portal/pc-saas-fulfillment-api-v2.md
120+
url: partner-center-portal/pc-saas-fulfillment-apis.md
121121
- text: Marketplace metering service APIs
122122
url: marketplace-metering-service-apis-faq.yml
123123
- text: Reporting API (PDF)

articles/marketplace/marketplace-apis-guide.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ The activities below are not sequential. The activity you use is dependent on yo
2222
| <center>**1. Product Marketing**<br><img src="media/api-guide/icon-product-marketing.png" alt="The icon for product marketing"> | Create product messaging, positioning, promotion, pricing | Create product messaging, positioning, promotion, pricing<br>[Partner Ingestion API](https://apidocs.microsoft.com/services/partneringestion/)<br>[Azure Apps Onboarding API](azure-app-apis.md)</ul> | Create product messaging, positioning, promotion, pricing<br>Partner Center (PC) → Offer Creation |
2323
| <center>**2. Demand Generation**<br><img src="media/api-guide/icon-demand-generation.png" alt="The icon for demand generation"> | Product Promotion<br>Lead nurturing<br>Eval, trial & PoC | Product Promotion<br>Lead nurturing<br>Eval, trial & PoC<br>[Lead CRM Connector for D365, SFDC and Marketo](partner-center-portal/commercial-marketplace-get-customer-leads.md)<br>[Co-Sell Connector for SalesForce CRM](/partner-center/connector-salesforce)<br>[Co-Sell Connector for Dynamics 365 CRM](/partner-center/connector-dynamics) | Product Promotion<br>Lead nurturing<br>Eval, trial & PoC<br>Azure Marketplace and AppSource<br>PC Marketplace Insights<br>PC Co-Sell Opportunities |
2424
| <center>**3. Negotiation and Quote Creation**<br><img src="media/api-guide/icon-negotiation-quote-creation.png" alt="The icon for negotiation and quote creation"> | T&Cs<br>Pricing<br>Discount approvals<br>Final quote | T&Cs<br>Pricing<br>Discount approvals<br>Final quote<br>[CPP API for VM's](cloud-partner-portal-api-overview.md)<br>[Microsoft Graph for AAD API](../active-directory/reports-monitoring/concept-reporting-api.md)<br>[Partner Center '7' API Family](https://apidocs.microsoft.com/services/partnercenter) | T&Cs<br>Pricing<br>Discount approvals<br>Final quote<br>PC → Plans (public or private) |
25-
| <center>**4. Sale**<br><img src="media/api-guide/icon-sale.png" alt="The icon for sale"> | Contract signing<br>Revenue Recognition<br>Invoicing<br>Billing | Contract signing<br>Revenue Recognition<br>Invoicing<br>Billing<br>[SaaS fulfillment API v.2](partner-center-portal/pc-saas-fulfillment-api-v2.md)<br>[Reporting APIs](https://partneranalytics-api.azureedge.net/partneranalytics-api/Programmatic%20Access%20to%20Commercial%20Marketplace%20Analytics%20Data_v1.pdf) | Contract signing<br>Revenue Recognition<br>Invoicing<br>Billing<br>Azure portal / Admin Center<br>PC Marketplace Rewards<br>PC Payouts Reports<br>PC Marketplace Analytics<br>PC Co-Sell Closing |
26-
| <center>**5. Maintenance**<br><img src="media/api-guide/icon-maintenance.png" alt="The icon for maintenance"> | Recurring billing<br>Overages<br>Product Support | Recurring billing<br>Overages<br>Product Support<br>[SaaS/AMAs: Billing APIs](https://partneranalytics-api.azureedge.net/partneranalytics-api/Programmatic%20Access%20to%20Commercial%20Marketplace%20Analytics%20Data_v1.pdf)<br>[SaaS fulfillment API v.2](partner-center-portal/pc-saas-fulfillment-api-v2.md)<br>[Partner Payouts API](https://apidocs.microsoft.com/services/partnerpayouts) <br>[github](https://github.com/microsoft/Partner-Center-Payout-APIs)<br>[Metered billing API](marketplace-metering-service-apis.md)<br>[(EA Customer) Azure Consumption API](/rest/api/consumption/)<br>[(EA Customer) Azure Charges List API](/rest/api/consumption/charges/list) | Recurring billing<br>Overages<br>Product Support<br>PC Payouts Reports<br>PC Marketplace Analytics |
27-
| <center>**6. Contract End**<br><img src="media/api-guide/icon-contract-end.png" alt="The icon for contract end"> | Renew or<br>Terminate |Renew or<br>Terminate <br>[SaaS fulfillment API v.2](partner-center-portal/pc-saas-fulfillment-api-v2.md)<br>AMA/VM's: auto-renew | Renew or<br>Terminate<br>PC Marketplace Analytics |
25+
| <center>**4. Sale**<br><img src="media/api-guide/icon-sale.png" alt="The icon for sale"> | Contract signing<br>Revenue Recognition<br>Invoicing<br>Billing | Contract signing<br>Revenue Recognition<br>Invoicing<br>Billing<br>[SaaS fulfillment API v.2](partner-center-portal/pc-saas-fulfillment-apis.md)<br>[Reporting APIs](https://partneranalytics-api.azureedge.net/partneranalytics-api/Programmatic%20Access%20to%20Commercial%20Marketplace%20Analytics%20Data_v1.pdf) | Contract signing<br>Revenue Recognition<br>Invoicing<br>Billing<br>Azure portal / Admin Center<br>PC Marketplace Rewards<br>PC Payouts Reports<br>PC Marketplace Analytics<br>PC Co-Sell Closing |
26+
| <center>**5. Maintenance**<br><img src="media/api-guide/icon-maintenance.png" alt="The icon for maintenance"> | Recurring billing<br>Overages<br>Product Support | Recurring billing<br>Overages<br>Product Support<br>[SaaS/AMAs: Billing APIs](https://partneranalytics-api.azureedge.net/partneranalytics-api/Programmatic%20Access%20to%20Commercial%20Marketplace%20Analytics%20Data_v1.pdf)<br>[SaaS fulfillment API v.2](partner-center-portal/pc-saas-fulfillment-apis.md)<br>[Partner Payouts API](https://apidocs.microsoft.com/services/partnerpayouts) <br>[github](https://github.com/microsoft/Partner-Center-Payout-APIs)<br>[Metered billing API](marketplace-metering-service-apis.md)<br>[(EA Customer) Azure Consumption API](/rest/api/consumption/)<br>[(EA Customer) Azure Charges List API](/rest/api/consumption/charges/list) | Recurring billing<br>Overages<br>Product Support<br>PC Payouts Reports<br>PC Marketplace Analytics |
27+
| <center>**6. Contract End**<br><img src="media/api-guide/icon-contract-end.png" alt="The icon for contract end"> | Renew or<br>Terminate |Renew or<br>Terminate <br>[SaaS fulfillment API v.2](./partner-center-portal/pc-saas-fulfillment-apis.md)<br>AMA/VM's: auto-renew | Renew or<br>Terminate<br>PC Marketplace Analytics |
2828
|
2929

3030
## Next steps

articles/marketplace/marketplace-commercial-transaction-capabilities-and-considerations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ The ability to transact through Microsoft is available for the following commerc
193193

194194
- **Azure Virtual Machine**: Select from free, BYOL, or usage-based pricing models. On the customer's Azure bill, Microsoft presents the publisher software license fees separately from the underlying Azure infrastructure fees. Azure infrastructure fees are driven by use of the publisher’s software.
195195

196-
- **SaaS application**: Must be a multitenant solution, use [Azure Active Directory](https://azure.microsoft.com/services/active-directory/) for authentication, and integrate with the [SaaS Fulfillment APIs](partner-center-portal/pc-saas-fulfillment-api-v2.md). Azure infrastructure usage is managed and billed directly to you (the publisher), so you must account for Azure infrastructure usage fees and software licensing fees as a single cost item. For detailed guidance, see [How to plan a SaaS offer for the commercial marketplace](plan-saas-offer.md#plans).
196+
- **SaaS application**: Must be a multitenant solution, use [Azure Active Directory](https://azure.microsoft.com/services/active-directory/) for authentication, and integrate with the [SaaS Fulfillment APIs](partner-center-portal/pc-saas-fulfillment-apis.md). Azure infrastructure usage is managed and billed directly to you (the publisher), so you must account for Azure infrastructure usage fees and software licensing fees as a single cost item. For detailed guidance, see [How to plan a SaaS offer for the commercial marketplace](plan-saas-offer.md#plans).
197197

198198
## Private plans
199199

articles/marketplace/marketplace-metering-service-apis-faq.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ sections:
8282
- question: |
8383
Can you get a list of all SaaS subscriptions, including active and unsubscribed subscriptions?
8484
answer: |
85-
Yes, when you call the [GET Subscriptions List API](partner-center-portal/pc-saas-fulfillment-api-v2.md#subscription-apis) as it includes a list of all SaaS subscriptions. The status field in the response for each SaaS subscription captures whether the subscription is active or unsubscribed.
85+
Yes, when you call the [GET Subscriptions List API](./partner-center-portal/pc-saas-fulfillment-subscription-api.md#get-list-of-all-subscriptions) as it includes a list of all SaaS subscriptions. The status field in the response for each SaaS subscription captures whether the subscription is active or unsubscribed.
8686
8787
- question: |
8888
Are the start and end dates of SaaS subscription term and overage usage emission connected?

articles/marketplace/marketplace-metering-service-apis.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Only one usage event can be emitted for each hour of a calendar day per resource
3636

3737
*Query parameters:*
3838

39-
| Paramter | Recommendation |
39+
| Parameter | Recommendation |
4040
| ---------- | ---------------------- |
4141
| `ApiVersion` | Use 2018-08-31. |
4242
| | |
@@ -67,7 +67,7 @@ Only one usage event can be emitted for each hour of a calendar day per resource
6767
6868
For Azure Application Managed Apps plans, the `resourceId` is the Managed App `resource group Id`. An example script for fetching it can be found in [using the Azure-managed identities token](./marketplace-metering-service-authentication.md#using-the-azure-managed-identities-token).
6969

70-
For SaaS offers, the `resourceId` is the SaaS subscription ID. For more details on SaaS subscriptions, see [list subscriptions](partner-center-portal/pc-saas-fulfillment-api-v2.md#get-list-of-all-subscriptions).
70+
For SaaS offers, the `resourceId` is the SaaS subscription ID. For more details on SaaS subscriptions, see [list subscriptions](partner-center-portal/pc-saas-fulfillment-subscription-api.md#get-list-of-all-subscriptions).
7171

7272
### Responses
7373

@@ -165,7 +165,7 @@ The batch usage event API allows you to emit usage events for more than one purc
165165
>[!NOTE]
166166
>In the request body, the resource identifier has different meanings for SaaS app and for Azure Managed app emitting custom meter. The resource identifier for SaaS App is `resourceID`. The resource identifier for Azure Application Managed Apps plans is `resourceUri`.
167167
168-
For SaaS offers, the `resourceId` is the SaaS subscription ID. For more details on SaaS subscriptions, see [list subscriptions](partner-center-portal/pc-saas-fulfillment-api-v2.md#get-list-of-all-subscriptions).
168+
For SaaS offers, the `resourceId` is the SaaS subscription ID. For more details on SaaS subscriptions, see [list subscriptions](partner-center-portal/pc-saas-fulfillment-subscription-api.md#get-list-of-all-subscriptions).
169169

170170
*Request body example for SaaS apps:*
171171

0 commit comments

Comments
 (0)