Skip to content

Commit 669fbe5

Browse files
Merge pull request #28389 from microsoftgraph/main
Auto Publish – main to live - 2026-03-07 00:30 UTC
2 parents 31810ce + 029781b commit 669fbe5

69 files changed

Lines changed: 2598 additions & 2031 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/prompts/author-api-docs.prompt.md

Lines changed: 67 additions & 1935 deletions
Large diffs are not rendered by default.

.github/prompts/author-api-docs/common.md

Lines changed: 755 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,279 @@
1+
# Scenario 3: Document deprecated and retired APIs
2+
3+
> **Before proceeding:** Read the shared standards and processes in [`common.md`](.github/prompts/author-api-docs/common.md). Use the `fetch` tool to open this file. It contains all shared setup steps, common processes (changelog, What's New, TOC, validation), reference standards, documentation standards, and the base quality checklist that apply to this scenario.
4+
5+
---
6+
7+
## Example interaction
8+
9+
> **Author:** We need to deprecate the `outlookTask` resource and its methods. Blog post: https://devblogs.microsoft.com/... Deadline: August 20, 2025. Alternative: To Do API.
10+
>
11+
> **AI:** _[Reads common file, verifies branch]_
12+
> I'll process these deprecation changes:
13+
>
14+
> 1. Update `outlookTask` resource: add "(deprecated)" to H1, add CAUTION banner, add `toc.title` and `ROBOTS: NOINDEX`
15+
> 2. Mark all child methods as deprecated (6 method files)
16+
> 3. Update references in parent resources
17+
> 4. Update changelog and What's New
18+
>
19+
> Proceeding now.
20+
21+
---
22+
23+
## Prerequisites
24+
25+
**See [temp-docstubs Folder](common.md#temp-docstubs-folder)** for instructions on setting up the temp-docstubs folder.
26+
27+
For this scenario, the author should add these files to `temp-docstubs`:
28+
- Documentation Plan documenting what is being deprecated
29+
- Autogenerated changelog file (changelog_*.json) if applicable
30+
- Any supporting documentation about the deprecation (blog post URLs, alternative APIs, migration guidance)
31+
32+
## Understanding API deprecation
33+
34+
A feature that is no longer in active development is _deprecated_. Deprecations are announced via blog posts and corresponding documentation updates. The deprecation announcement includes:
35+
- A timeline (deprecation period) after which the feature is removed from the service or the service is retired
36+
- Alternative features or workarounds for existing apps
37+
- Migration guidance and timelines
38+
39+
**Important:** Deprecation is not always a standalone process. An API can be deprecated in the same set of changes that add new APIs. For example:
40+
- Deprecating one property while adding a replacement property
41+
- Deprecating a method while adding a new method
42+
- Deprecating a resource while adding an alternative resource
43+
- Combining deprecation with other API additions or updates
44+
45+
The Documentation Plan may contain a mix of deprecation and new API documentation tasks.
46+
47+
**API artifacts that can be deprecated:**
48+
- Resources (Entity Types and Complex Types)
49+
- Methods (CRUD operations, actions, functions)
50+
- Properties
51+
- Relationships (Navigation Properties)
52+
- Parameters (path, function, or query parameters)
53+
- Enumerations (entire enum or specific enum members)
54+
- Actions
55+
- Functions
56+
57+
## Inputs
58+
59+
### Required inputs
60+
61+
Ask the author to provide these in the `temp-docstubs` folder:
62+
63+
**Documentation Plan (required):**
64+
- Detailed description of what is being deprecated, which files to change, alternatives/workarounds, milestone dates, and blog post links
65+
- May include both deprecation and non-deprecation changes (mixed scenarios)
66+
- **Location:** `temp-docstubs` folder
67+
68+
**Autogenerated changelog (optional):**
69+
- JSON file if provided
70+
- **Location:** `temp-docstubs` folder
71+
72+
### When the author provides context directly in their prompt
73+
74+
If the author has already described the deprecation in sufficient detail (e.g., named specific resources, methods, or properties to deprecate, provided the alternative and deadline), you can work directly from their prompt instead of requesting formal inputs. In this case:
75+
76+
| Instead of... | Use... |
77+
|---------------|--------|
78+
| Documentation Plan | The author's prompt — extract what is being deprecated, the alternative/workaround, milestone date, and blog post link |
79+
| Autogenerated changelog | Ask the author if a changelog and What's New update are needed. If yes, use the [manual changelog authoring](common.md#manually-authoring-changelog-entries) process |
80+
81+
**What you still need from the author** (ask if not provided):
82+
- What specifically is being deprecated (resource, method, property, enum, etc.)
83+
- The alternative API or workaround
84+
- The milestone/sunset date
85+
- Blog post URL (if available)
86+
- Which version(s): beta, v1.0, or both
87+
- WorkloadArea and SubArea for the changelog (if one is needed)
88+
89+
## Key principles
90+
91+
- **Customer clarity:** Clearly indicate what is deprecated and provide alternatives/workarounds
92+
- **Implicit deprecation:** Deprecating a resource implies all its properties, methods, and relationships are deprecated (no need to mark each individually)
93+
- **Type definitions:** Deprecating a resource does NOT deprecate child type definitions unless explicitly stated
94+
95+
## Common deprecation patterns
96+
97+
**Deprecation banner (applies to resources, methods, enumerations with own topics):**
98+
- Place immediately after namespace declaration (before beta disclaimer if beta)
99+
- Format as CAUTION alert
100+
- Include: what's deprecated, milestone date, alternative/workaround, blog post link
101+
- Use include files stored in `api-reference/includes/` for consistency across topics
102+
103+
**Example:**
104+
```markdown
105+
> [!CAUTION]
106+
> The Outlook tasks API is deprecated and will stop returning data on August 20, 2022. Use the [To Do API](https://learn.microsoft.com/graph/api/resources/todo-overview?view=graph-rest-1.0) instead.
107+
```
108+
109+
**Table updates (applies to properties, relationships, parameters, enum members):**
110+
- Add "(deprecated)" to the name in the first column
111+
- Update description with alternative/workaround
112+
- Move to end of table, grouped alphabetically with other deprecated items
113+
- Do NOT add "(deprecated)" to JSON representation sections (causes validation errors)
114+
115+
**TOC updates:**
116+
- Add `toc.title` attribute in YAML front matter with "(deprecated)" OR
117+
- Include "(deprecated)" inside link text in Methods tables
118+
119+
---
120+
121+
## Deprecation guides
122+
123+
### To deprecate a resource
124+
125+
1. **Update resource topic:**
126+
- Add "(deprecated)" to H1 title: `# user resource type (deprecated)`
127+
- Add deprecation banner (see common pattern above)
128+
- Add `toc.title` with "(deprecated)" to YAML front matter
129+
- Add `ROBOTS: NOINDEX` to YAML front matter
130+
131+
2. **Mark child methods:**
132+
- Add "(deprecated)" to H1 title in each method topic
133+
- Add deprecation banner to each method topic
134+
- Add `ROBOTS: NOINDEX` to YAML front matter
135+
136+
3. **Update references in other resources:**
137+
- Add "(deprecated)" to properties/relationships/methods that reference the deprecated resource type
138+
139+
4. **Do NOT mark child type definitions as deprecated** (only if explicitly stated in Summary)
140+
141+
---
142+
143+
### To deprecate a method
144+
145+
1. **Update method topic:**
146+
- Add "(deprecated)" to H1 title: `# Delete user (deprecated)`
147+
- Add deprecation banner with alternative/workaround
148+
149+
2. **Update parent resource Methods table:**
150+
- Add "(deprecated)" inside link text: `[Delete (deprecated)](user-delete.md)`
151+
- Move to end of table (grouped alphabetically with other deprecated methods)
152+
- Include alternative in description column
153+
154+
---
155+
156+
### To deprecate a property
157+
158+
1. **Update resource Properties table:**
159+
- Add "(deprecated)" to property name, update description with alternative, move to end (see common pattern)
160+
161+
2. **Update API method topics:**
162+
- Add "(deprecated)" in Request body tables (POST, PATCH, PUT) if property is used
163+
- Update Response examples: remove property if no longer returned, keep if still returned
164+
165+
---
166+
167+
### To deprecate a relationship
168+
169+
1. **Update resource Relationships table:**
170+
- Add "(deprecated)" to relationship name, update description, move to end (see common pattern)
171+
172+
2. **Deprecate corresponding methods:**
173+
- Methods including the navigation property as a segment are also deprecated
174+
- Follow method deprecation workflow for each affected method
175+
176+
---
177+
178+
### To deprecate a parameter
179+
180+
**Update parameter table in method topic:**
181+
- Add "(deprecated)" to parameter name, specify whether to ignore or use alternative, move to end (see common pattern)
182+
183+
---
184+
185+
### To deprecate an enumeration
186+
187+
1. **Update enumeration definition:**
188+
- **In enums.md or parent resource:** Add "(deprecated)" to section title: `### emailType values (deprecated)`
189+
- **In own topic (rare):** Add "(deprecated)" to H1 title and add deprecation banner
190+
191+
2. **Update properties using the enum:**
192+
- Update type, description, possible values with alternative/workaround
193+
194+
---
195+
196+
### To deprecate enumeration members
197+
198+
1. **Update member table:**
199+
- Add "(deprecated)" to member name, specify alternative, move to end (see common pattern)
200+
201+
2. **Update property descriptions:**
202+
- Note which values are deprecated and provide guidance
203+
204+
---
205+
206+
## Supporting updates
207+
208+
**Changelog:** Change type: "Deprecation". Include API set/entities, link to topics and blog post. See [Updating the Changelog](common.md#updating-the-changelog).
209+
210+
**What's New:** Describe deprecation, link to deprecated API and alternative, link to blog post. See [Updating What's New](common.md#updating-whats-new).
211+
212+
---
213+
214+
## Mixed scenarios
215+
216+
When combining deprecation with new APIs/promotions:
217+
1. Categorize changes (deprecation, new, promotion, updates)
218+
2. Process non-deprecation tasks first (ensures alternatives are documented)
219+
3. Process deprecation tasks, referencing newly created alternatives
220+
4. Update changelog with both deprecation and addition/change entries
221+
222+
---
223+
224+
## Version-specific notes
225+
226+
- **Beta:** Banner after namespace, before beta disclaimer; keep beta disclaimer; use `?view=graph-rest-beta&preserve-view=true`
227+
- **v1.0:** Banner after namespace; no query strings in links
228+
- **Both:** Apply to both versions; may have different milestone dates/alternatives
229+
230+
---
231+
232+
## Quality checklist
233+
234+
In addition to the [base quality checklist](common.md#base-quality-checklist), verify:
235+
- [ ] "(deprecated)" added to H1 titles or table entries as appropriate
236+
- [ ] Deprecation banners added (resources, methods, enums with own topics): CAUTION alert after namespace, includes milestone/alternative/blog link
237+
- [ ] Include files used for banner text (best practice)
238+
- [ ] TOC updated: `toc.title` in YAML or "(deprecated)" in link text
239+
- [ ] Alternatives/workarounds provided and linked
240+
- [ ] "(deprecated)" NOT added to JSON representation sections
241+
242+
**Table entries (properties, relationships, parameters, enum members):**
243+
- [ ] "(deprecated)" added to name in first column
244+
- [ ] Description updated with alternative
245+
- [ ] Moved to end of table (grouped alphabetically with other deprecated items)
246+
247+
**Resources:**
248+
- [ ] All child methods marked deprecated with banners
249+
- [ ] References in other resources marked "(deprecated)"
250+
- [ ] Child type definitions NOT marked deprecated (unless explicitly stated)
251+
252+
**Relationships:**
253+
- [ ] Corresponding methods with navigation property as segment also deprecated
254+
255+
**Properties:**
256+
- [ ] "(deprecated)" added in Request body tables (POST/PATCH/PUT) if applicable
257+
- [ ] Response examples updated (removed if no longer returned, kept if still returned)
258+
- [ ] Description accuracy reviewed (e.g., "required" removed)
259+
260+
**Enumerations:**
261+
- [ ] Section title or H1 title updated
262+
- [ ] Properties using enum updated with alternatives
263+
264+
**Supporting updates:**
265+
- [ ] Changelog: Change type "Deprecation", links to topics/blog
266+
- [ ] What's New: describes deprecation, links to API/alternative/blog
267+
268+
**Mixed scenarios:**
269+
- [ ] Non-deprecation tasks processed first
270+
- [ ] Deprecation references newly created alternatives
271+
- [ ] Changelog includes both deprecation and addition entries
272+
273+
**Version-specific:**
274+
- [ ] Beta: Banner before beta disclaimer; beta disclaimer retained; links include `?view=graph-rest-beta&preserve-view=true`
275+
- [ ] V1.0: No query strings in links
276+
- [ ] Both versions: Applied to both with version-specific formatting
277+
278+
**Final — Scenario 3 specific:**
279+
- [ ] All deprecation items from Documentation Plan addressed

0 commit comments

Comments
 (0)