Files
leadchat/swagger/definitions/resource/account_detail.yml
Shivam Mishra 9a9398b386 feat: validate OpenAPI spec using Skooma (#13623)
Adds Skooma-based OpenAPI validation so SDK-facing request specs can
assert that documented request and response contracts match real Rails
behavior. This also upgrades the spec to OpenAPI 3.1 and fixes contract
drift uncovered while validating core application and platform
resources.

Closes
None

Why
We want CI to catch OpenAPI drift before it reaches SDK consumers. While
wiring validation in, this PR surfaced several mismatches between the
documented contract and what the Rails endpoints actually accept or
return.

What this change does
- Adds Skooma-backed OpenAPI validation to the request spec flow and a
dedicated OpenAPI validation spec.
- Migrates nullable schema definitions to OpenAPI 3.1-compatible unions.
- Updates core SDK-facing schemas and payloads across accounts,
contacts, conversations, inboxes, messages, teams, reporting events, and
platform account resources.
- Documents concrete runtime cases that were previously missing or
inaccurate, including nested `profile` update payloads, multipart avatar
uploads, required profile update bodies, nullable inbox feature flags,
and message sender types that include both `Captain::Assistant` and
senderless activity-style messages.
- Regenerates the committed Swagger JSON and tag-group artifacts used by
CI sync checks.

Validation
- `bundle exec rake swagger:build`
- `bundle exec rspec spec/swagger/openapi_spec.rb`

---------

Co-authored-by: Sojan Jose <sojan@pepalo.com>
2026-03-10 18:33:55 -07:00

90 lines
2.3 KiB
YAML

type: object
properties:
id:
type: number
description: Account ID
name:
type: string
description: Name of the account
locale:
type: string
description: The locale of the account
domain:
type: string
description: The domain of the account
support_email:
type: string
description: The support email of the account
status:
type: string
description: The status of the account
created_at:
type: string
format: date-time
description: The creation date of the account
cache_keys:
type: object
description: Cache keys for the account
features:
type: object
description: Enabled features for the account
settings:
type: object
description: Account settings
properties:
auto_resolve_after:
type: number
description: Auto resolve conversations after specified minutes
auto_resolve_message:
type: string
description: Message to send when auto resolving
auto_resolve_ignore_waiting:
type: boolean
description: Whether to ignore waiting conversations for auto resolve
custom_attributes:
type: object
description: Custom attributes of the account
properties:
plan_name:
type:
- string
- 'null'
description: Subscription plan name
subscribed_quantity:
type:
- number
- 'null'
description: Subscribed quantity
subscription_status:
type:
- string
- 'null'
description: Subscription status
subscription_ends_on:
type:
- string
- 'null'
format: date
description: Subscription end date
industry:
type: string
description: Industry type
company_size:
type: string
description: Company size
timezone:
type: string
description: Account timezone
logo:
type: string
description: Account logo URL
onboarding_step:
type: string
description: Current onboarding step
marked_for_deletion_at:
type: string
format: date-time
description: When account was marked for deletion
marked_for_deletion_reason:
type: string
description: Reason for account deletion