Skip to content

MT-20326: Fix differences between old and new api docs#13

Merged
mklocek merged 3 commits intomainfrom
MT-20326-differences-between-old-and-new-api-docs
Jan 16, 2026
Merged

MT-20326: Fix differences between old and new api docs#13
mklocek merged 3 commits intomainfrom
MT-20326-differences-between-old-and-new-api-docs

Conversation

@mklocek
Copy link
Contributor

@mklocek mklocek commented Jan 15, 2026

Motivation

https://railsware.atlassian.net/browse/MT-20326

Changes

  • Update List Suppressions API spec
  • Fix webhook handler page titles
  • Fix optional/required fields description in oneOf schemas in transactional, bulk & sandbox send endpoints

How to test

  • See ticket description

Images and GIFs

None

Summary by CodeRabbit

  • New Features

    • Suppressions endpoint: time-based filtering via start/end date parameters.
  • Improvements

    • Suppressions: clearer delete description and expanded error responses (400, 429).
    • Webhooks: improved documentation titles for JSON handlers.
    • Email sending: stricter validation—plain text, HTML and template fields now required in their respective variants.
  • Breaking Changes

    • Removed several legacy contact schema aliases; some email schema required/variant semantics adjusted.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Jan 15, 2026

📝 Walkthrough

Walkthrough

OpenAPI specs updated: email schemas adopt required-field wrapper variants (EmailSubjectRequired, EmailTextRequired, EmailHtmlRequired, TemplateUuidRequired); composite email schemas reference these variants and drop top-level required blocks. Suppressions endpoint gains start_time/end_time query parameters and new 400/429 responses. Contact alias entries removed; webhook tag titles updated.

Changes

Cohort / File(s) Summary
Email sending (bulk & transactional)
specs/email-sending-bulk.openapi.yml, specs/email-sending-transactional.openapi.yml
Added required fields to base schemas (EmailText.required: [text], EmailHtml.required: [html], TemplateUuid.required: [template_uuid]). Removed top-level required and some description blocks from composite schemas (EmailWithText, EmailWithHtml, EmailWithTextAndHtml, EmailFromTemplate) so validation is delegated to the required variants.
Sandbox API schema updates
specs/sandbox.openapi.yml
Introduced required-variant schemas (EmailTextRequired, EmailHtmlRequired, EmailSubjectRequired, TemplateUuidRequired). Composite email schemas now reference EmailSenderRequired and the Required variants; EmailSender marked required: [from]. Titles removed from several base schemas; Inbox public reference removed.
Email suppressions endpoint
specs/email-api.openapi.yml
GET /api/accounts/{account_id}/suppressions description changed ("Suppressed emails" → "Suppressed addresses"); added query params start_time and end_time (date-time) with examples; added responses 400 (BAD_REQUEST) and 429 (LIMIT_EXCEEDED). DELETE suppression operationId updated to deleteSuppression and description changed to "Delete suppression".
Contacts schema aliases removed
specs/contacts.openapi.yml
Removed alias public schema entries mapping Contact, ContactUpdateRequest, ContactUpdateResponse, ContactCreateRequest, ContactList to their _2 counterparts, leaving Contact_2 as the defined schema.
Webhook tag metadata
specs/webhooks.openapi.yml
Updated tag x-page-title values: json-handler → "Receive events (JSON format)"; jsonlines-handler → "Receive events (JSON Lines format)".

Sequence Diagram(s)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested reviewers

  • yanchuk

Poem

🐰 A nibble, a hop, schemas aligned,
Required fields snug where they’re signed,
Suppressions now span time’s range,
Contacts trimmed, titles rearranged,
Docs shine — a rabbit’s small delight! 🥕

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title references a Jira ticket (MT-20326) but lacks clarity about the actual changes; it uses vague phrasing 'Fix differences' without specifying what was fixed. Revise the title to be more descriptive, e.g., 'MT-20326: Update API specs for suppressions, webhooks, and email schemas' or similar to clarify the main changes.
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed The description covers the main changes and follows the template structure, though some sections are minimal; the 'How to test' section lacks detail beyond the checkbox.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.



📜 Recent review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7825d9c and 31accd5.

📒 Files selected for processing (6)
  • specs/contacts.openapi.yml
  • specs/email-api.openapi.yml
  • specs/email-sending-bulk.openapi.yml
  • specs/email-sending-transactional.openapi.yml
  • specs/sandbox.openapi.yml
  • specs/webhooks.openapi.yml
💤 Files with no reviewable changes (1)
  • specs/contacts.openapi.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • specs/webhooks.openapi.yml
🧰 Additional context used
📓 Path-based instructions (1)
specs/**/*.openapi.yml

📄 CodeRabbit inference engine (CLAUDE.md)

specs/**/*.openapi.yml: Base URLs must never be changed in OpenAPI specs. Use https://send.api.mailtrap.io for transactional emails, https://bulk.api.mailtrap.io for bulk emails, and https://mailtrap.io for all other APIs
All documentation links in OpenAPI specs must be absolute URLs pointing to docs.mailtrap.io, not relative links or help.mailtrap.io
Update contact URLs in spec info blocks to use https://docs.mailtrap.io, not help.mailtrap.io
Use GitBook markdown syntax in OpenAPI description fields, ensuring all blocks are properly closed: {% hint %}...{% endhint %} and {% tab %}...{% endtab %}
Tabs cannot be nested inside details blocks when using GitBook syntax in OpenAPI descriptions
Include code samples in x-codeSamples in this priority order: Node.js, PHP, Python, Ruby, .NET, Java, cURL
Use official Mailtrap SDKs for language-specific code samples in x-codeSamples, with Node.js (mailtrap/mailtrap-nodejs), PHP (railsware/mailtrap-php), Python (railsware/mailtrap-python), and Ruby (railsware/mailtrap-ruby)
Use environment variables for API keys in code samples (e.g., process.env.MAILTRAP_API_KEY)
Validate YAML syntax, OpenAPI 3.1 compliance, base URLs, contact URLs, GitBook blocks, links, and code samples before committing OpenAPI spec changes
Do not use emojis in specification content
Keep OpenAPI descriptions concise and developer-focused, with technical accuracy prioritized
Use custom OpenAPI extensions for GitBook navigation: x-page-title, x-page-icon, x-page-description, x-parent, x-codeSamples, and x-logo
Structure tags with x-page-title, x-page-description, and x-parent for GitBook nested navigation in OpenAPI specs
Use official product naming: 'Email API/SMTP' (can shorten to 'Email API' or 'API/SMTP'), 'Email Sandbox' (can shorten to 'Sandbox'), 'Email Marketing' (can shorten to 'Marketing')

Files:

  • specs/email-sending-transactional.openapi.yml
  • specs/email-sending-bulk.openapi.yml
  • specs/email-api.openapi.yml
  • specs/sandbox.openapi.yml
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
Repo: mailtrap/mailtrap-openapi PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-23T11:20:58.573Z
Learning: Applies to specs/**/*.openapi.yml : Update contact URLs in spec `info` blocks to use `https://docs.mailtrap.io`, not help.mailtrap.io
Learnt from: CR
Repo: mailtrap/mailtrap-openapi PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-23T11:20:58.573Z
Learning: Applies to specs/**/*.openapi.yml : Use official product naming: 'Email API/SMTP' (can shorten to 'Email API' or 'API/SMTP'), 'Email Sandbox' (can shorten to 'Sandbox'), 'Email Marketing' (can shorten to 'Marketing')
📚 Learning: 2025-12-23T11:20:58.573Z
Learnt from: CR
Repo: mailtrap/mailtrap-openapi PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-23T11:20:58.573Z
Learning: Applies to specs/**/*.openapi.yml : Use official product naming: 'Email API/SMTP' (can shorten to 'Email API' or 'API/SMTP'), 'Email Sandbox' (can shorten to 'Sandbox'), 'Email Marketing' (can shorten to 'Marketing')

Applied to files:

  • specs/email-sending-transactional.openapi.yml
  • specs/email-sending-bulk.openapi.yml
  • specs/sandbox.openapi.yml
📚 Learning: 2025-12-29T15:56:56.076Z
Learnt from: dr-3lo
Repo: mailtrap/mailtrap-openapi PR: 9
File: specs/email-sending-bulk.openapi.yml:159-170
Timestamp: 2025-12-29T15:56:56.076Z
Learning: In OpenAPI spec files under specs, particularly within x-codeSamples code examples, replace actual environment variable references with clear placeholders (e.g., YOUR_API_KEY, YOUR_ACCOUNT_ID) to avoid leaking secrets in documentation. Ensure code samples show substitute values and note how users should provide real values in their environment.

Applied to files:

  • specs/email-sending-transactional.openapi.yml
  • specs/email-sending-bulk.openapi.yml
  • specs/email-api.openapi.yml
  • specs/sandbox.openapi.yml
🔇 Additional comments (12)
specs/email-sending-transactional.openapi.yml (3)

284-290: LGTM! Required constraint correctly added to EmailText schema.

Adding required: [text] at the component level ensures proper validation when EmailText is composed into EmailWithText and EmailWithTextAndHtml schemas via allOf.


294-300: LGTM! Required constraint correctly added to EmailHtml schema.

This mirrors the change to EmailText and ensures html is required when the schema is referenced.


365-372: LGTM! Required constraint correctly added to TemplateUuid schema.

This ensures template_uuid is required in EmailFromTemplate through composition.

specs/email-api.openapi.yml (2)

666-666: LGTM! Description clarified to "Suppressed addresses".

This is more accurate since suppressions operate on email addresses, not individual emails.


842-849: LGTM! New error responses added for better API error handling.

Adding 400 (BAD_REQUEST) and 429 (LIMIT_EXCEEDED) responses aligns this endpoint with the stats endpoints that already use these response types.

specs/email-sending-bulk.openapi.yml (3)

310-316: LGTM! Required constraint correctly added to EmailText schema.

Consistent with the transactional spec changes. The text field is now properly required at the component level.


320-326: LGTM! Required constraint correctly added to EmailHtml schema.

The html field is now required when this schema is composed into EmailWithHtml and EmailWithTextAndHtml.


391-398: LGTM! Required constraint correctly added to TemplateUuid schema.

This ensures template_uuid is required in EmailFromTemplate, matching the transactional spec.

specs/sandbox.openapi.yml (4)

4885-4897: Clean refactoring of required field constraints using wrapper schemas.

The pattern of using EmailSenderRequired, EmailSubjectRequired, and EmailTextRequired wrapper schemas cleanly separates required field constraints from the base property definitions. This approach:

  • Allows BatchEmailRequests to inherit from EmailSender without forcing from as required on individual batch items
  • Makes the oneOf variants self-documenting regarding which fields are mandatory

The title change to "Text Only" improves API documentation clarity.


5012-5022: LGTM - EmailFromTemplate correctly refactored.

The schema now uses EmailSenderRequired and TemplateUuidRequired to enforce the mandatory fields for template-based emails, while keeping the structure clean and consistent with other email variants.


5222-5231: New Required wrapper schemas are well-structured.

All four new schemas (EmailHtmlRequired, EmailSubjectRequired, EmailTextRequired, TemplateUuidRequired) follow a consistent pattern:

  • Each defines required with the single field
  • Each includes the properties definition with description

While this duplicates property definitions from the non-Required counterparts, it provides explicit and clear schema documentation. An alternative using allOf composition could reduce duplication if this pattern expands further.

Also applies to: 5283-5292, 5301-5310, 5361-5374


5256-5267: Previous review feedback properly addressed.

The separation between EmailSender (without required constraint) and EmailSenderRequired (with required: [from]) correctly fixes the batch email validation issue. BatchEmailRequests at line 5078 now uses the base EmailSender, allowing individual batch items to inherit from from the base object without requiring it on each request.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@specs/email-api.openapi.yml`:
- Around line 825-838: The `end_date` parameter description is incorrect and the
two parameter names are inconsistent: change the `end_date` description to
"Search emails suppressed before this timestamp" (or similar) and pick a
consistent pair of names (either rename `start_time` → `start_date` or
`end_date` → `end_time`) so both use the same suffix; update the parameter names
wherever referenced in the spec and keep the same schema/type/format and
examples (e.g., '2025-12-31T23:59:59Z') to match the chosen naming convention.

In `@specs/sandbox.openapi.yml`:
- Around line 5259-5264: The EmailSender schema currently declares required: -
from which forces every item in BatchEmailRequests (which includes EmailSender
via allOf) to require from; fix by creating a new wrapper schema
EmailSenderRequired that $ref's Address and sets required: [from], leave the
existing EmailSender schema without the required constraint, and update the
top-level composite send schemas (EmailWithText, EmailWithHtml,
EmailWithTextAndHtml, EmailFromTemplate) to reference EmailSenderRequired
instead of EmailSender so individual batch items still inherit from 'base' while
single-send schemas enforce the from field.
🧹 Nitpick comments (3)
specs/email-sending-bulk.openapi.yml (1)

298-314: Address pipeline warnings: unused base schemas.

The linter flags EmailSubject, EmailText, EmailHtml, and TemplateUuid as unused components since only the *Required variants are now referenced by the composite schemas.

Options to resolve:

  1. Remove unused schemas if they serve no external purpose
  2. Keep for backward compatibility if external tools/clients reference them directly, but add a comment explaining their purpose
Option 1: Remove unused EmailSubject schema
-    EmailSubject:
-      type: object
-      properties:
-        subject:
-          type: string
-          minLength: 1
-          example: Monthly Newsletter
-
     EmailSubjectRequired:
       type: object
       required:
         - subject

Apply similar removal to EmailText, EmailHtml, and TemplateUuid if they are not needed.

specs/email-sending-transactional.openapi.yml (1)

272-288: Same unused component warnings apply here.

As with the bulk spec, the linter flags EmailSubject, EmailText, EmailHtml, and TemplateUuid as unused. Apply the same resolution strategy across both specs for consistency.

specs/sandbox.openapi.yml (1)

4704-4705: Remove unused Inbox schema alias to resolve pipeline warning.

The Inbox schema is an alias to TestingInbox but is never referenced. The linter correctly flags it as unused. Consider removing it to clean up the spec.

♻️ Proposed fix
 components:
   schemas:
-    Inbox:
-      $ref: '#/components/schemas/TestingInbox'
     InboxMessageWithoutBlacklistsReportInfo:
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0462f38 and 7825d9c.

📒 Files selected for processing (5)
  • specs/email-api.openapi.yml
  • specs/email-sending-bulk.openapi.yml
  • specs/email-sending-transactional.openapi.yml
  • specs/sandbox.openapi.yml
  • specs/webhooks.openapi.yml
🧰 Additional context used
📓 Path-based instructions (1)
specs/**/*.openapi.yml

📄 CodeRabbit inference engine (CLAUDE.md)

specs/**/*.openapi.yml: Base URLs must never be changed in OpenAPI specs. Use https://send.api.mailtrap.io for transactional emails, https://bulk.api.mailtrap.io for bulk emails, and https://mailtrap.io for all other APIs
All documentation links in OpenAPI specs must be absolute URLs pointing to docs.mailtrap.io, not relative links or help.mailtrap.io
Update contact URLs in spec info blocks to use https://docs.mailtrap.io, not help.mailtrap.io
Use GitBook markdown syntax in OpenAPI description fields, ensuring all blocks are properly closed: {% hint %}...{% endhint %} and {% tab %}...{% endtab %}
Tabs cannot be nested inside details blocks when using GitBook syntax in OpenAPI descriptions
Include code samples in x-codeSamples in this priority order: Node.js, PHP, Python, Ruby, .NET, Java, cURL
Use official Mailtrap SDKs for language-specific code samples in x-codeSamples, with Node.js (mailtrap/mailtrap-nodejs), PHP (railsware/mailtrap-php), Python (railsware/mailtrap-python), and Ruby (railsware/mailtrap-ruby)
Use environment variables for API keys in code samples (e.g., process.env.MAILTRAP_API_KEY)
Validate YAML syntax, OpenAPI 3.1 compliance, base URLs, contact URLs, GitBook blocks, links, and code samples before committing OpenAPI spec changes
Do not use emojis in specification content
Keep OpenAPI descriptions concise and developer-focused, with technical accuracy prioritized
Use custom OpenAPI extensions for GitBook navigation: x-page-title, x-page-icon, x-page-description, x-parent, x-codeSamples, and x-logo
Structure tags with x-page-title, x-page-description, and x-parent for GitBook nested navigation in OpenAPI specs
Use official product naming: 'Email API/SMTP' (can shorten to 'Email API' or 'API/SMTP'), 'Email Sandbox' (can shorten to 'Sandbox'), 'Email Marketing' (can shorten to 'Marketing')

Files:

  • specs/webhooks.openapi.yml
  • specs/email-sending-bulk.openapi.yml
  • specs/sandbox.openapi.yml
  • specs/email-api.openapi.yml
  • specs/email-sending-transactional.openapi.yml
🧠 Learnings (5)
📓 Common learnings
Learnt from: CR
Repo: mailtrap/mailtrap-openapi PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-23T11:20:58.573Z
Learning: Applies to specs/**/*.openapi.yml : Update contact URLs in spec `info` blocks to use `https://docs.mailtrap.io`, not help.mailtrap.io
Learnt from: CR
Repo: mailtrap/mailtrap-openapi PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-23T11:20:58.573Z
Learning: Applies to specs/**/*.openapi.yml : Use official product naming: 'Email API/SMTP' (can shorten to 'Email API' or 'API/SMTP'), 'Email Sandbox' (can shorten to 'Sandbox'), 'Email Marketing' (can shorten to 'Marketing')
📚 Learning: 2025-12-23T11:20:58.573Z
Learnt from: CR
Repo: mailtrap/mailtrap-openapi PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-23T11:20:58.573Z
Learning: Applies to specs/**/*.openapi.yml : Structure tags with `x-page-title`, `x-page-description`, and `x-parent` for GitBook nested navigation in OpenAPI specs

Applied to files:

  • specs/webhooks.openapi.yml
📚 Learning: 2025-12-23T11:20:58.573Z
Learnt from: CR
Repo: mailtrap/mailtrap-openapi PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-23T11:20:58.573Z
Learning: Applies to specs/**/*.openapi.yml : Use official product naming: 'Email API/SMTP' (can shorten to 'Email API' or 'API/SMTP'), 'Email Sandbox' (can shorten to 'Sandbox'), 'Email Marketing' (can shorten to 'Marketing')

Applied to files:

  • specs/webhooks.openapi.yml
  • specs/email-sending-bulk.openapi.yml
  • specs/sandbox.openapi.yml
  • specs/email-sending-transactional.openapi.yml
📚 Learning: 2025-12-23T11:20:58.573Z
Learnt from: CR
Repo: mailtrap/mailtrap-openapi PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-23T11:20:58.573Z
Learning: Applies to specs/**/*.openapi.yml : Keep OpenAPI descriptions concise and developer-focused, with technical accuracy prioritized

Applied to files:

  • specs/webhooks.openapi.yml
📚 Learning: 2025-12-29T15:56:56.076Z
Learnt from: dr-3lo
Repo: mailtrap/mailtrap-openapi PR: 9
File: specs/email-sending-bulk.openapi.yml:159-170
Timestamp: 2025-12-29T15:56:56.076Z
Learning: In OpenAPI spec files under specs, particularly within x-codeSamples code examples, replace actual environment variable references with clear placeholders (e.g., YOUR_API_KEY, YOUR_ACCOUNT_ID) to avoid leaking secrets in documentation. Ensure code samples show substitute values and note how users should provide real values in their environment.

Applied to files:

  • specs/webhooks.openapi.yml
  • specs/email-sending-bulk.openapi.yml
  • specs/sandbox.openapi.yml
  • specs/email-api.openapi.yml
  • specs/email-sending-transactional.openapi.yml
🪛 GitHub Actions: Lint OpenAPI Specs
specs/email-sending-bulk.openapi.yml

[warning] 298-298: oas3-unused-component Potentially unused component has been detected. components.schemas.EmailSubject


[warning] 316-316: oas3-unused-component Potentially unused component has been detected. components.schemas.EmailText


[warning] 334-334: oas3-unused-component Potentially unused component has been detected. components.schemas.EmailHtml


[warning] 413-413: oas3-unused-component Potentially unused component has been detected. components.schemas.TemplateUuid

specs/sandbox.openapi.yml

[warning] 4704-4704: oas3-unused-component Potentially unused component has been detected. components.schemas.Inbox


[error] 5113-5113: "0" property must have required property "from" components.schemas.BatchEmail.example.requests[0]

specs/email-sending-transactional.openapi.yml

[warning] 272-272: oas3-unused-component Potentially unused component has been detected. components.schemas.EmailSubject


[warning] 290-290: oas3-unused-component Potentially unused component has been detected. components.schemas.EmailText


[warning] 308-308: oas3-unused-component Potentially unused component has been detected. components.schemas.EmailHtml


[warning] 387-387: oas3-unused-component Potentially unused component has been detected. components.schemas.TemplateUuid

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Lint OpenAPI files with Spectral
🔇 Additional comments (10)
specs/webhooks.openapi.yml (1)

74-91: LGTM! Improved page titles for webhook handlers.

The updated x-page-title values ("Receive events (JSON format)" and "Receive events (JSON Lines format)") are more descriptive and action-oriented compared to the previous generic "JSON Handler" / "JSON Lines Handler" names. This improves discoverability in the documentation navigation.

specs/email-api.openapi.yml (2)

666-666: LGTM! Improved terminology.

The change from "Suppressed emails" to "Suppressed addresses" is more accurate since suppression applies to email addresses, not individual email messages.


842-849: LGTM! New error responses added.

The addition of 400 (BAD_REQUEST) and 429 (LIMIT_EXCEEDED) responses aligns with the stats endpoints in the same file and improves API consistency.

specs/email-sending-bulk.openapi.yml (1)

443-494: LGTM! Composite schemas correctly reference required variants.

The update to reference EmailSubjectRequired, EmailTextRequired, EmailHtmlRequired, and TemplateUuidRequired in the composite schemas (EmailWithText, EmailWithHtml, EmailWithTextAndHtml, EmailFromTemplate) properly enforces required field validation through the schema composition. This approach correctly addresses the PR objective of fixing optional/required fields in oneOf schemas.

specs/email-sending-transactional.openapi.yml (1)

417-467: LGTM! Consistent with bulk spec changes.

The composite schema updates mirror the bulk spec changes, ensuring consistent required field validation across both transactional and bulk email sending endpoints.

specs/sandbox.openapi.yml (5)

4888-4899: LGTM!

The EmailWithText schema correctly references EmailSubjectRequired and EmailTextRequired while keeping EmailHtml optional. The title "Text Only" improves documentation clarity.


4930-4941: LGTM!

The EmailWithHtml schema correctly requires subject and html via wrapper schemas while keeping text optional.


4972-4983: LGTM!

The EmailWithTextAndHtml schema correctly requires subject, text, and html via the new wrapper schemas.


5015-5053: LGTM!

The EmailFromTemplate schema correctly references TemplateUuidRequired for template-based emails.


5225-5233: LGTM!

The new *Required wrapper schemas follow a consistent pattern, properly marking individual fields as required while preserving the optional variants for batch email contexts.

Also applies to: 5281-5289, 5299-5307, 5359-5371

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

@mklocek mklocek force-pushed the MT-20326-differences-between-old-and-new-api-docs branch from 7825d9c to 98026cd Compare January 15, 2026 15:59
ContactCreateRequest:
$ref: '#/components/schemas/ContactCreateRequest_2'
ContactList:
$ref: '#/components/schemas/ContactList_2'
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mklocek mklocek force-pushed the MT-20326-differences-between-old-and-new-api-docs branch from 98026cd to 31accd5 Compare January 15, 2026 16:02
@mklocek mklocek merged commit d0b99aa into main Jan 16, 2026
2 checks passed
@mklocek mklocek deleted the MT-20326-differences-between-old-and-new-api-docs branch January 16, 2026 09:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants