Skip to content

Commit 7effd15

Browse files
authored
Merge branch 'vNext' into UpdateDictionary
2 parents 1f2c06a + dd41040 commit 7effd15

27 files changed

+2109
-559
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
# These are the set of folks who should review PRs on the azureRestUpdates branch.
22
* @microsoft/azure-api-stewardship-board @Azure/api-stewardship-board
3+
/graph/* @microsoft/graphguidelinesapprovers

Guidelines.md

Lines changed: 82 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
> # NOTICE TO READERS
2+
>
3+
> ## **Guidance for Azure service teams**
4+
> Azure service teams should use the companion documents, [Azure REST API Guidelines](./azure/Guidelines.md) and [Considerations for Service Design](./azure/ConsiderationsForServiceDesign.md), when building or modifying their services. These documents provide a refined set of guidance targeted specifically for Azure services. For more information please refer to the [README](./azure/README.md) in the Azure folder.
5+
>
6+
> ## **Guidance for Microsoft Graph service teams**
7+
> Graph service teams should reference the companion document, [Graph REST API Guidelines](./graph/GuidelinesGraph.md) when building or modifying their services. This document and the associated pattern catalog provides a refined set of guidance targeted specifically for Microsoft Graph services.
8+
9+
---
10+
111
# Microsoft REST API Guidelines
212

313
## Microsoft REST API Guidelines Working Group
@@ -23,134 +33,145 @@ This document establishes the guidelines Microsoft REST APIs SHOULD follow so RE
2333
## 2. Table of contents
2434
<!-- TOC depthFrom:2 depthTo:4 orderedList:false updateOnSave:false withLinks:true -->
2535

26-
- [Microsoft REST API Guidelines Working Group](#microsoft-rest-api-guidelines-working-group)
27-
- [1. Abstract](#1-abstract)
28-
- [2. Table of contents](#2-table-of-contents)
29-
- [3. Introduction](#3-introduction)
36+
- [Microsoft REST API Guidelines](#microsoft-rest-api-guidelines)
37+
- [Microsoft REST API Guidelines Working Group](#microsoft-rest-api-guidelines-working-group)
38+
- [Microsoft REST API Guidelines](#microsoft-rest-api-guidelines-1)
39+
- [1. Abstract](#1-abstract)
40+
- [2. Table of contents](#2-table-of-contents)
41+
- [3. Introduction](#3-introduction)
3042
- [3.1. Recommended reading](#31-recommended-reading)
31-
- [4. Interpreting the guidelines](#4-interpreting-the-guidelines)
43+
- [4. Interpreting the guidelines](#4-interpreting-the-guidelines)
3244
- [4.1. Application of the guidelines](#41-application-of-the-guidelines)
3345
- [4.2. Guidelines for existing services and versioning of services](#42-guidelines-for-existing-services-and-versioning-of-services)
3446
- [4.3. Requirements language](#43-requirements-language)
3547
- [4.4. License](#44-license)
36-
- [5. Taxonomy](#5-taxonomy)
48+
- [5. Taxonomy](#5-taxonomy)
3749
- [5.1. Errors](#51-errors)
3850
- [5.2. Faults](#52-faults)
3951
- [5.3. Latency](#53-latency)
4052
- [5.4. Time to complete](#54-time-to-complete)
4153
- [5.5. Long running API faults](#55-long-running-api-faults)
42-
- [6. Client guidance](#6-client-guidance)
54+
- [6. Client guidance](#6-client-guidance)
4355
- [6.1. Ignore rule](#61-ignore-rule)
4456
- [6.2. Variable order rule](#62-variable-order-rule)
4557
- [6.3. Silent fail rule](#63-silent-fail-rule)
46-
- [7. Consistency fundamentals](#7-consistency-fundamentals)
58+
- [7. Consistency fundamentals](#7-consistency-fundamentals)
4759
- [7.1. URL structure](#71-url-structure)
4860
- [7.2. URL length](#72-url-length)
4961
- [7.3. Canonical identifier](#73-canonical-identifier)
5062
- [7.4. Supported methods](#74-supported-methods)
51-
- [7.4.1. POST](#741-post)
52-
- [7.4.2. PATCH](#742-patch)
53-
- [7.4.3. Creating resources via PATCH (UPSERT semantics)](#743-creating-resources-via-patch-upsert-semantics)
54-
- [7.4.4. Options and link headers](#744-options-and-link-headers)
63+
- [7.4.1. POST](#741-post)
64+
- [7.4.2. PATCH](#742-patch)
65+
- [7.4.3. Creating resources via PATCH (UPSERT semantics)](#743-creating-resources-via-patch-upsert-semantics)
66+
- [7.4.4. Options and link headers](#744-options-and-link-headers)
5567
- [7.5. Standard request headers](#75-standard-request-headers)
5668
- [7.6. Standard response headers](#76-standard-response-headers)
5769
- [7.7. Custom headers](#77-custom-headers)
5870
- [7.8. Specifying headers as query parameters](#78-specifying-headers-as-query-parameters)
5971
- [7.9. PII parameters](#79-pii-parameters)
6072
- [7.10. Response formats](#710-response-formats)
61-
- [7.10.1. Clients-specified response format](#7101-clients-specified-response-format)
62-
- [7.10.2. Error condition responses](#7102-error-condition-responses)
73+
- [7.10.1. Clients-specified response format](#7101-clients-specified-response-format)
74+
- [7.10.2. Error condition responses](#7102-error-condition-responses)
75+
- [ErrorResponse : Object](#errorresponse--object)
76+
- [Error : Object](#error--object)
77+
- [InnerError : Object](#innererror--object)
78+
- [Examples](#examples)
6379
- [7.11. HTTP Status Codes](#711-http-status-codes)
6480
- [7.12. Client library optional](#712-client-library-optional)
65-
- [8. CORS](#8-cors)
81+
- [8. CORS](#8-cors)
6682
- [8.1. Client guidance](#81-client-guidance)
67-
- [8.1.1. Avoiding preflight](#811-avoiding-preflight)
83+
- [8.1.1. Avoiding preflight](#811-avoiding-preflight)
6884
- [8.2. Service guidance](#82-service-guidance)
69-
- [9. Collections](#9-collections)
85+
- [9. Collections](#9-collections)
7086
- [9.1. Item keys](#91-item-keys)
7187
- [9.2. Serialization](#92-serialization)
7288
- [9.3. Collection URL patterns](#93-collection-url-patterns)
73-
- [9.3.1. Nested collections and properties](#931-nested-collections-and-properties)
89+
- [9.3.1. Nested collections and properties](#931-nested-collections-and-properties)
7490
- [9.4. Big collections](#94-big-collections)
7591
- [9.5. Changing collections](#95-changing-collections)
7692
- [9.6. Sorting collections](#96-sorting-collections)
77-
- [9.6.1. Interpreting a sorting expression](#961-interpreting-a-sorting-expression)
93+
- [9.6.1. Interpreting a sorting expression](#961-interpreting-a-sorting-expression)
7894
- [9.7. Filtering](#97-filtering)
79-
- [9.7.1. Filter operations](#971-filter-operations)
80-
- [9.7.2. Operator examples](#972-operator-examples)
81-
- [9.7.3. Operator precedence](#973-operator-precedence)
95+
- [9.7.1. Filter operations](#971-filter-operations)
96+
- [9.7.2. Operator examples](#972-operator-examples)
97+
- [9.7.3. Operator precedence](#973-operator-precedence)
8298
- [9.8. Pagination](#98-pagination)
83-
- [9.8.1. Server-driven paging](#981-server-driven-paging)
84-
- [9.8.2. Client-driven paging](#982-client-driven-paging)
85-
- [9.8.3. Additional considerations](#983-additional-considerations)
99+
- [9.8.1. Server-driven paging](#981-server-driven-paging)
100+
- [9.8.2. Client-driven paging](#982-client-driven-paging)
101+
- [9.8.3. Additional considerations](#983-additional-considerations)
86102
- [9.9. Compound collection operations](#99-compound-collection-operations)
87103
- [9.10. Empty Results](#910-empty-results)
88-
- [10. Delta queries](#10-delta-queries)
104+
- [10. Delta queries](#10-delta-queries)
89105
- [10.1. Delta links](#101-delta-links)
90106
- [10.2. Entity representation](#102-entity-representation)
91107
- [10.3. Obtaining a delta link](#103-obtaining-a-delta-link)
92108
- [10.4. Contents of a delta link response](#104-contents-of-a-delta-link-response)
93109
- [10.5. Using a delta link](#105-using-a-delta-link)
94-
- [11. JSON standardizations](#11-json-standardizations)
110+
- [11. JSON standardizations](#11-json-standardizations)
95111
- [11.1. JSON formatting standardization for primitive types](#111-json-formatting-standardization-for-primitive-types)
96112
- [11.2. Guidelines for dates and times](#112-guidelines-for-dates-and-times)
97-
- [11.2.1. Producing dates](#1121-producing-dates)
98-
- [11.2.2. Consuming dates](#1122-consuming-dates)
99-
- [11.2.3. Compatibility](#1123-compatibility)
113+
- [11.2.1. Producing dates](#1121-producing-dates)
114+
- [11.2.2. Consuming dates](#1122-consuming-dates)
115+
- [11.2.3. Compatibility](#1123-compatibility)
100116
- [11.3. JSON serialization of dates and times](#113-json-serialization-of-dates-and-times)
101-
- [11.3.1. The `DateLiteral` format](#1131-the-dateliteral-format)
102-
- [11.3.2. Commentary on date formatting](#1132-commentary-on-date-formatting)
117+
- [11.3.1. The `DateLiteral` format](#1131-the-dateliteral-format)
118+
- [11.3.2. Commentary on date formatting](#1132-commentary-on-date-formatting)
103119
- [11.4. Durations](#114-durations)
104120
- [11.5. Intervals](#115-intervals)
105121
- [11.6. Repeating intervals](#116-repeating-intervals)
106-
- [12. Versioning](#12-versioning)
122+
- [12. Versioning](#12-versioning)
107123
- [12.1. Versioning formats](#121-versioning-formats)
108-
- [12.1.1. Group versioning](#1211-group-versioning)
124+
- [12.1.1. Group versioning](#1211-group-versioning)
125+
- [Examples of group versioning](#examples-of-group-versioning)
109126
- [12.2. When to version](#122-when-to-version)
110127
- [12.3. Definition of a breaking change](#123-definition-of-a-breaking-change)
111-
- [13. Long running operations](#13-long-running-operations)
128+
- [13. Long running operations](#13-long-running-operations)
112129
- [13.1. Resource based long running operations (RELO)](#131-resource-based-long-running-operations-relo)
113130
- [13.2. Stepwise long running operations](#132-stepwise-long-running-operations)
114-
- [13.2.1. PUT](#1321-put)
115-
- [13.2.2. POST](#1322-post)
116-
- [13.2.3. POST, hybrid model](#1323-post-hybrid-model)
117-
- [13.2.4. Operations resource](#1324-operations-resource)
118-
- [13.2.5. Operation resource](#1325-operation-resource)
119-
- [13.2.6. Operation tombstones](#1326-operation-tombstones)
120-
- [13.2.7. The typical flow, polling](#1327-the-typical-flow-polling)
121-
- [13.2.8. The typical flow, push notifications](#1328-the-typical-flow-push-notifications)
122-
- [13.2.9. Retry-After](#1329-retry-after)
131+
- [13.2.1. PUT](#1321-put)
132+
- [13.2.2. POST](#1322-post)
133+
- [13.2.3. POST, hybrid model](#1323-post-hybrid-model)
134+
- [13.2.4. Operations resource](#1324-operations-resource)
135+
- [13.2.5. Operation resource](#1325-operation-resource)
136+
- [Percent complete](#percent-complete)
137+
- [Target resource location](#target-resource-location)
138+
- [13.2.6. Operation tombstones](#1326-operation-tombstones)
139+
- [13.2.7. The typical flow, polling](#1327-the-typical-flow-polling)
140+
- [Example of the typical flow, polling](#example-of-the-typical-flow-polling)
141+
- [13.2.8. The typical flow, push notifications](#1328-the-typical-flow-push-notifications)
142+
- [Example of the typical flow, push notifications existing subscription](#example-of-the-typical-flow-push-notifications-existing-subscription)
143+
- [13.2.9. Retry-After](#1329-retry-after)
123144
- [13.3. Retention policy for operation results](#133-retention-policy-for-operation-results)
124-
- [14. Throttling, Quotas, and Limits](#14-throttling-quotas-and-limits)
145+
- [14. Throttling, Quotas, and Limits](#14-throttling-quotas-and-limits)
125146
- [14.1. Principles](#141-principles)
126147
- [14.2. Return Codes (429 vs 503)](#142-return-codes-429-vs-503)
127148
- [14.3. Retry-After and RateLimit Headers](#143-retry-after-and-ratelimit-headers)
128149
- [14.4. Service Guidance](#144-service-guidance)
129-
- [14.4.1. Responsiveness](#1441-responsiveness)
130-
- [14.4.2. Rate Limits and Quotas](#1442-rate-limits-and-quotas)
131-
- [14.4.3. Overloaded services](#1443-overloaded-services)
132-
- [14.4.4. Example Response](#1444-example-response)
150+
- [14.4.1. Responsiveness](#1441-responsiveness)
151+
- [14.4.2. Rate Limits and Quotas](#1442-rate-limits-and-quotas)
152+
- [14.4.3. Overloaded services](#1443-overloaded-services)
153+
- [14.4.4. Example Response](#1444-example-response)
133154
- [14.5. Caller Guidance](#145-caller-guidance)
134155
- [14.6. Handling callers that ignore Retry-After headers](#146-handling-callers-that-ignore-retry-after-headers)
135-
- [15. Push notifications via webhooks](#15-push-notifications-via-webhooks)
156+
- [15. Push notifications via webhooks](#15-push-notifications-via-webhooks)
136157
- [15.1. Scope](#151-scope)
137158
- [15.2. Principles](#152-principles)
138159
- [15.3. Types of subscriptions](#153-types-of-subscriptions)
139160
- [15.4. Call sequences](#154-call-sequences)
140161
- [15.5. Verifying subscriptions](#155-verifying-subscriptions)
141162
- [15.6. Receiving notifications](#156-receiving-notifications)
142-
- [15.6.1. Notification payload](#1561-notification-payload)
163+
- [15.6.1. Notification payload](#1561-notification-payload)
143164
- [15.7. Managing subscriptions programmatically](#157-managing-subscriptions-programmatically)
144-
- [15.7.1. Creating subscriptions](#1571-creating-subscriptions)
145-
- [15.7.2. Updating subscriptions](#1572-updating-subscriptions)
146-
- [15.7.3. Deleting subscriptions](#1573-deleting-subscriptions)
147-
- [15.7.4. Enumerating subscriptions](#1574-enumerating-subscriptions)
165+
- [15.7.1. Creating subscriptions](#1571-creating-subscriptions)
166+
- [15.7.2. Updating subscriptions](#1572-updating-subscriptions)
167+
- [15.7.3. Deleting subscriptions](#1573-deleting-subscriptions)
168+
- [15.7.4. Enumerating subscriptions](#1574-enumerating-subscriptions)
148169
- [15.8. Security](#158-security)
149-
- [16. Unsupported requests](#16-unsupported-requests)
170+
- [16. Unsupported requests](#16-unsupported-requests)
150171
- [16.1. Essential guidance](#161-essential-guidance)
151172
- [16.2. Feature allow list](#162-feature-allow-list)
152-
- [16.2.1. Error response](#1621-error-response)
153-
- [17. Naming guidelines](#17-naming-guidelines)
173+
- [16.2.1. Error response](#1621-error-response)
174+
- [17. Naming guidelines](#17-naming-guidelines)
154175
- [17.1. Approach](#171-approach)
155176
- [17.2. Casing](#172-casing)
156177
- [17.3. Names to avoid](#173-names-to-avoid)
@@ -160,10 +181,10 @@ This document establishes the guidelines Microsoft REST APIs SHOULD follow so RE
160181
- [17.7. Name properties](#177-name-properties)
161182
- [17.8. Collections and counts](#178-collections-and-counts)
162183
- [17.9. Common property names](#179-common-property-names)
163-
- [18. Appendix](#18-appendix)
184+
- [18. Appendix](#18-appendix)
164185
- [18.1. Sequence diagram notes](#181-sequence-diagram-notes)
165-
- [18.1.1. Push notifications, per user flow](#1811-push-notifications-per-user-flow)
166-
- [18.1.2. Push notifications, firehose flow](#1812-push-notifications-firehose-flow)
186+
- [18.1.1. Push notifications, per user flow](#1811-push-notifications-per-user-flow)
187+
- [18.1.2. Push notifications, firehose flow](#1812-push-notifications-firehose-flow)
167188

168189
<!-- /TOC -->
169190

README.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
1-
# Microsoft REST API Guidelines
1+
# NOTICE TO READERS
2+
3+
## Guidance for Azure service teams
4+
Azure service teams should use companion documents, [Azure REST API Guidelines](./azure/Guidelines.md) and [Considerations for Service Design](./azure/ConsiderationsForServiceDesign.md), when building or modifying their services. These documents provide a refined set of guidance targeted specifically for Azure services. For more information please refer to the [README](./azure/README.md) in the Azure folder.
5+
6+
## Guidance for Microsoft Graph service teams
7+
Microsoft Graph service teams should reference the companion document, [Graph REST API Guidelines](./graph/GuidelinesGraph.md) when building or modifying their services.
8+
9+
In the process of building many of Microsoft's highest scale services, the Microsoft Graph team found the Microsoft API guidelines tremendously useful as a baseline. However, there are several areas where we need to provide more clarity on how developers should describe their APIs. The companion document, [Graph REST API Guidelines](./graph/GuidelinesGraph.md) is a set of amendments and clarifications for Microsoft Graph that act as further reading. Recognizing that two documents is a lot for a new API designer to absorb, our plan is to follow the approach Azure have taken and roll out guidelines for Microsoft Graph into a single consolidated document.
10+
11+
---
12+
13+
## Microsoft REST API Guidelines
214
The [Microsoft REST API Guidelines](Guidelines.md) are Microsoft's internal company-wide REST API design guidelines.
315
Teams at Microsoft typically reference this document when setting API design policy.
416
They may additionally create documents specific to their team, adding further guidance or making adjustments as appropriate to their circumstances.
517

618
We publish these guidelines here with the aim of fostering dialogue and learning in the API community at large.
719
We further hope that these guidelines may encourage other organizations to create guidelines that are appropriate for them and in turn, if they are able, to publish theirs.
820

9-
### Additional guidance for Azure service teams
10-
Azure service teams should reference the companion documents, [Azure REST API Guidelines](./azure/Guidelines.md) and [Considerations for Service Design](./azure/ConsiderationsForServiceDesign.md), when building or modifying their services. These documents provide a refined set of guidance targeted specifically for Azure services. For more information please refer to the [README](./azure/README.md) in the Azure folder.
11-
12-
### Additional guidance for Microsoft Graph service teams
13-
Graph service teams should reference the companion document, [Graph REST API Guidelines](./graph/GuidelinesGraph.md) when building or modifying their services. This document and the associated pattern catalog provides a refined set of guidance targeted specifically for Microsoft Graph services.
14-
1521
[![License: CC BY 4.0](https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/)
1622

1723
## Code of Conduct

0 commit comments

Comments
 (0)