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
@@ -15,11 +15,14 @@ Before beginning the documentation process, first ask the author which documenta
15
15
**Please select your documentation scenario:**
16
16
1. Author fresh APIs / fresh API changes to beta
17
17
2. Promote APIs from beta to v1.0
18
+
3. Document deprecated APIs
18
19
19
-
**Please respond with 1or 2 to proceed.**
20
+
**Please respond with 1, 2, or 3 to proceed.**
20
21
21
22
Once the author responds, follow the appropriate workflow below.
22
23
24
+
**Note:** Scenario 3 (deprecation) can be combined with Scenario 1 or 2. If the Summary of API changes includes both deprecation and other changes (new APIs, promotions, updates), the workflow will handle mixed scenarios by processing non-deprecation tasks first, then applying deprecation documentation.
25
+
23
26
---
24
27
25
28
## Common Setup and Processes
@@ -76,11 +79,56 @@ After authoring documentation, update the appropriate changelog file in the `cha
76
79
}
77
80
```
78
81
79
-
**Step 3: Copy changelog records**
80
-
- Copy the ChangeList records from the autogenerated changelog
81
-
- Add them to the appropriate changelog file in the `changelog/` folder
82
-
- Ensure the WorkloadArea and SubArea match the autogenerated file
83
-
- Use "beta" for Version in Scenario 1, "v1.0" for Version in Scenario 2
82
+
**Step 3: Copy the complete changelog record**
83
+
-**IMPORTANT:** A changelog record is NOT just the ChangeList array. A complete changelog record consists of:
- Copy only the ChangeList items and insert them into an existing record
128
+
- Modify the Id, CreatedDateTime, or other metadata from the autogenerated file
129
+
- Create a new record structure manually
130
+
131
+
-**Result:** The changelog file should have the new record added at the beginning of the changelog array, with all subsequent records following it
84
132
85
133
### Common Process: Updating What's New
86
134
@@ -230,8 +278,8 @@ For this scenario, the author should add these files to `temp-docstubs`:
230
278
231
279
### Additional prerequisites
232
280
After gathering the inputs, you must also prompt the author to provide:
233
-
-**author**: The value to use in the front matter `author` field across all new files
234
-
-**ms.subservice**: The value to use in the front matter `ms.subservice` field across all new files
281
+
-**author**: Value to replace TODO placeholders in the `author` field (only for new files or where TODO exists)
282
+
-**ms.subservice**: Value to replace TODO placeholders in the `ms.subservice` field (only for new files or where TODO exists)
235
283
236
284
### Critical guidance on doc stubs
237
285
@@ -514,6 +562,243 @@ Remove "(preview)" from TOC entries as applicable:
514
562
515
563
---
516
564
565
+
## Scenario 3: Document deprecated APIs
566
+
567
+
### Prerequisites
568
+
569
+
**See [Common Setup: temp-docstubs Folder](#common-setup-temp-docstubs-folder)** for instructions on setting up the temp-docstubs folder.
570
+
571
+
For this scenario, the author should add these files to `temp-docstubs`:
572
+
- Summary of API changes documenting what is being deprecated
573
+
- Autogenerated changelog file (changelog_*.json) if applicable
574
+
- Any supporting documentation about the deprecation (blog post URLs, alternative APIs, migration guidance)
575
+
576
+
### Understanding API deprecation
577
+
578
+
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:
579
+
- A timeline (deprecation period) after which the feature is removed from the service or the service is retired
580
+
- Alternative features or workarounds for existing apps
581
+
- Migration guidance and timelines
582
+
583
+
**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:
584
+
- Deprecating one property while adding a replacement property
585
+
- Deprecating a method while adding a new method
586
+
- Deprecating a resource while adding an alternative resource
587
+
- Combining deprecation with other API additions or updates
588
+
589
+
The Summary of API changes may contain a mix of deprecation and new API documentation tasks.
590
+
591
+
**API artifacts that can be deprecated:**
592
+
- Resources (Entity Types and Complex Types)
593
+
- Methods (CRUD operations, actions, functions)
594
+
- Properties
595
+
- Relationships (Navigation Properties)
596
+
- Parameters (path, function, or query parameters)
597
+
- Enumerations
598
+
599
+
### Inputs required
600
+
601
+
**Summary of API changes (required):**
602
+
- Detailed description of what is being deprecated, which files to change, alternatives/workarounds, milestone dates, and blog post links
603
+
- May include both deprecation and non-deprecation changes (mixed scenarios)
604
+
-**Location:**`temp-docstubs` folder
605
+
606
+
**Autogenerated changelog (optional):**
607
+
- JSON file if provided
608
+
-**Location:**`temp-docstubs` folder
609
+
610
+
### Key principles
611
+
612
+
-**Customer clarity:** Clearly indicate what is deprecated and provide alternatives/workarounds
613
+
-**Implicit deprecation:** Deprecating a resource implies all its properties, methods, and relationships are deprecated (no need to mark each individually)
614
+
-**Type definitions:** Deprecating a resource does NOT deprecate child type definitions unless explicitly stated
615
+
616
+
### Common deprecation patterns
617
+
618
+
**Deprecation banner (applies to resources, methods, enumerations with own topics):**
619
+
- Place immediately after namespace declaration (before beta disclaimer if beta)
620
+
- Format as CAUTION alert
621
+
- Include: what's deprecated, milestone date, alternative/workaround, blog post link
622
+
- Use include files stored in `api-reference/includes/` for consistency across topics
623
+
624
+
**Example:**
625
+
```markdown
626
+
> [!CAUTION]
627
+
> 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.
628
+
```
629
+
630
+
**Table updates (applies to properties, relationships, parameters, enum members):**
631
+
- Add "(deprecated)" to the name in the first column
632
+
- Update description with alternative/workaround
633
+
- Move to end of table, grouped alphabetically with other deprecated items
634
+
- Do NOT add "(deprecated)" to JSON representation sections (causes validation errors)
635
+
636
+
**TOC updates:**
637
+
- Add `toc.title` attribute in YAML front matter with "(deprecated)" OR
638
+
- Include "(deprecated)" inside link text in Methods tables
639
+
640
+
---
641
+
642
+
### To deprecate a resource
643
+
644
+
1.**Update resource topic:**
645
+
- Add "(deprecated)" to H1 title: `# user resource type (deprecated)`
646
+
- Add deprecation banner (see common pattern above)
647
+
- Add `toc.title` with "(deprecated)" to YAML front matter
648
+
649
+
2.**Mark child methods:**
650
+
- Add "(deprecated)" to H1 title in each method topic
651
+
- Add deprecation banner to each method topic
652
+
653
+
3.**Update references in other resources:**
654
+
- Add "(deprecated)" to properties/relationships/methods that reference the deprecated resource type
655
+
656
+
4.**Do NOT mark child type definitions as deprecated** (only if explicitly stated in Summary)
657
+
658
+
---
659
+
660
+
### To deprecate a method
661
+
662
+
1.**Update method topic:**
663
+
- Add "(deprecated)" to H1 title: `# Delete user (deprecated)`
664
+
- Add deprecation banner with alternative/workaround
665
+
666
+
2.**Update parent resource Methods table:**
667
+
- Add "(deprecated)" inside link text: `[Delete (deprecated)](user-delete.md)`
668
+
- Move to end of table (grouped alphabetically with other deprecated methods)
669
+
- Include alternative in description column
670
+
671
+
---
672
+
673
+
### To deprecate a property
674
+
675
+
1.**Update resource Properties table:**
676
+
- Add "(deprecated)" to property name, update description with alternative, move to end (see common pattern)
677
+
678
+
2.**Update API method topics:**
679
+
- Add "(deprecated)" in Request body tables (POST, PATCH, PUT) if property is used
680
+
- Update Response examples: remove property if no longer returned, keep if still returned
681
+
682
+
---
683
+
684
+
### To deprecate a relationship
685
+
686
+
1.**Update resource Relationships table:**
687
+
- Add "(deprecated)" to relationship name, update description, move to end (see common pattern)
688
+
689
+
2.**Deprecate corresponding methods:**
690
+
- Methods including the navigation property as a segment are also deprecated
691
+
- Follow method deprecation workflow for each affected method
692
+
693
+
---
694
+
695
+
### To deprecate a parameter
696
+
697
+
**Update parameter table in method topic:**
698
+
- Add "(deprecated)" to parameter name, specify whether to ignore or use alternative, move to end (see common pattern)
699
+
700
+
---
701
+
702
+
### To deprecate an enumeration
703
+
704
+
1.**Update enumeration definition:**
705
+
-**In enums.md or parent resource:** Add "(deprecated)" to section title: `### emailType values (deprecated)`
706
+
-**In own topic (rare):** Add "(deprecated)" to H1 title and add deprecation banner
707
+
708
+
2.**Update properties using the enum:**
709
+
- Update type, description, possible values with alternative/workaround
710
+
711
+
---
712
+
713
+
### To deprecate enumeration members
714
+
715
+
1.**Update member table:**
716
+
- Add "(deprecated)" to member name, specify alternative, move to end (see common pattern)
717
+
718
+
2.**Update property descriptions:**
719
+
- Note which values are deprecated and provide guidance
720
+
721
+
---
722
+
723
+
### Supporting updates
724
+
725
+
**Changelog:** Change type: "Deprecation". Include API set/entities, link to topics and blog post. See [Common Process: Updating the Changelog](#common-process-updating-the-changelog).
726
+
727
+
**What's New:** Describe deprecation, link to deprecated API and alternative, link to blog post. See [Common Process: Updating What's New](#common-process-updating-whats-new).
728
+
729
+
---
730
+
731
+
### Mixed scenarios
732
+
733
+
When combining deprecation with new APIs/promotions:
0 commit comments