You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This article details the API that enables independent software vendors (ISVs) to sell their SaaS applications in the AppSource and Azure Marketplace. This API is a requirement for listing SaaS offers on the AppSource and Azure Marketplace.
14
+
This article details the API that enables independent software vendors (ISVs) to integrate their SaaS applications with the Azure Marketplace. This API enables ISV applications to participate in all commerce enabled channels: direct, partner-led (reseller) and field-led. This API is a requirement for listing transactable SaaS offers on the Azure Marketplace.
15
15
16
16
17
17
## Managing the SaaS subscription lifecycle
@@ -114,7 +114,7 @@ Resolves the opaque token to a SaaS subscription.<br>
114
114
```json
115
115
Response body:
116
116
{
117
-
"id": "<guid>",
117
+
"subscriptionId": "<guid>",
118
118
"subscriptionName": "Contoso Cloud Solution",
119
119
"offerId": "offer1",
120
120
"planId": "silver",
@@ -171,7 +171,7 @@ Lists all the SaaS subscriptions for a publisher.
171
171
172
172
*Response codes:*
173
173
174
-
Code: 200<br>
174
+
Code: 200<br/>
175
175
Based on the auth token, get the publisher and corresponding subscriptions for all the publisher's offers.<br>
176
176
Response payload:<br>
177
177
@@ -204,7 +204,6 @@ Response payload:<br>
204
204
205
205
The continuation token will only be present if there are additional "pages" of plans to retrieve.
206
206
207
-
208
207
Code: 403 <br>
209
208
Unauthorized. The auth token wasn't provided, is invalid, or the request is attempting to access an acquisition that doesn’t belong to the current publisher.
210
209
@@ -365,13 +364,14 @@ Internal Server Error<br>
365
364
366
365
```json
367
366
{
368
-
"planId": "gold"
367
+
"planId": "gold",
368
+
"quantity": ""
369
369
}
370
370
```
371
371
372
372
*Response codes:*
373
373
374
-
Code: 202<br>
374
+
Code: 200<br>
375
375
Activates the subscription.<br>
376
376
377
377
Code: 404<br>
@@ -449,9 +449,6 @@ Bad request- Validation failures.
449
449
Code: 403<br>
450
450
Unauthorized. The auth token wasn't provided, is invalid, or the request is attempting to access an acquisition that doesn’t belong to the current publisher.
451
451
452
-
Code: 409<br>
453
-
Another operation is in progress on the resource. Wait for pending operations to complete then try again.
454
-
455
452
Code: 500<br>
456
453
Internal Server Error
457
454
@@ -518,9 +515,6 @@ Bad request- Validation failures.
518
515
Code: 403<br>
519
516
Unauthorized. The auth token wasn't provided, is invalid, or the request is attempting to access an acquisition that doesn’t belong to the current publisher.
520
517
521
-
Code: 409<br>
522
-
Another operation is in progress on the resource. Wait for pending operations to complete then try again.
523
-
524
518
Code: 500<br>
525
519
Internal Server Error
526
520
@@ -550,13 +544,14 @@ Unsubscribe and delete the specified subscription.
550
544
551
545
| | |
552
546
| --------------- | --------------- |
547
+
| Content-Type | `application/json` |
553
548
| x-ms-requestid | A unique string value for tracking the request from the client, preferably a GUID. If this value isn't provided, one will be generated and provided in the response headers. |
554
549
| x-ms-correlationid | A unique string value for operation on the client. This parameter correlates all events from client operation with events on the server side. If this value isn't provided, one will be generated and provided in the response headers. |
ISV initiated call to indicate unsubscribe on a SaaS subscription.<br>
561
556
562
557
Code: 404<br>
@@ -784,48 +779,37 @@ The publisher must implement a webhook in this SaaS service to proactively notif
784
779
785
780
```json
786
781
{
787
-
"id": "<this is a Guid operation id, you can call operations API with this to get status>",
788
-
"activityId": "<this is a Guid correlation id>",
789
-
"subscriptionId": "<Guid to uniquely identify this resource>",
790
-
"publisherId": "<this is the publisher’s name>",
791
-
"offerId": "<this is the offer name>",
792
-
"planId": "<this is the plan id>",
793
-
"quantity": "<the number of seats, will be null if not per-seat saas offer>",
794
-
"timeStamp": "2019-04-15T20:17:31.7350641Z",
795
-
"action": "Unsubscribe",
796
-
"status": "NotStarted"
782
+
"operationId": "<guid>",
783
+
"activityId": "<guid>",
784
+
"subscriptionId":"<guid>",
785
+
"offerId": "offer1",
786
+
"publisherId": "contoso",
787
+
"planId": "silver",
788
+
"quantity": "20" ,
789
+
"action": "Subscribe",
790
+
"timeStamp": "2018-12-01T00:00:00"
797
791
}
792
+
```
798
793
799
794
Where action can be one of these:
800
-
Subscribe, (When the resource has been activated)
801
-
Unsubscribe, (When the resource has been deleted)
802
-
ChangePlan, (When the change plan operation has completed)
803
-
ChangeQuantity, (When the change quantity operation has completed),
804
-
Suspend, (When resource has been suspended)
805
-
Reinstate, (When resource has been reinstated after suspension)
806
-
807
-
808
-
Where status can be one of these:
809
-
NotStarted,
810
-
InProgress,
811
-
Succeeded,
812
-
Failed,
813
-
Conflict
814
-
815
-
Actionable statuses are Succeeded and Failed in a webhook notification. An operation's lifecycle is from NotStarted to a terminal state like Succeeded/Failed/Conflict. If you receive Not started or in progress, please continue to request the status via GET operation API until the operation reaches a terminal state before taking any action.
816
-
```
795
+
- `Subscribe` (When the resource has been activated)
796
+
- `Unsubscribe` (When the resource has been deleted)
797
+
- `ChangePlan` (When the change plan operation has completed)
798
+
- `ChangeQuantity` (When the change quantity operation has completed)
799
+
- `Suspend` (When the resource has been suspended)
800
+
- `Reinstate` (When resource has been reinstated after suspension)
817
801
818
802
819
803
## Mock API
820
804
821
805
You can use our mock APIs to help you get started with development, particularly prototyping, and testing projects.
Any of the API calls in this article can be made to the mock host endpoint. You can expect to get mock data back as a response.
812
+
Note that mock API invocations use a different API version (date) than the production API. Any of the API calls in this article can be made to the mock host endpoint. In general, you can expect to get mock data back as a response. Calls to the update subscription methods on the mock API always return 500.
0 commit comments