## Description This PR updates the OpenAPI schema definitions for Public API resources (`public_conversation`, `public_message`, `public_contact`) so they match the actual API responses produced by the jbuilder views. These definitions were introduced in #2417 (2021-06) with a minimal set of fields. The jbuilder views have since been updated (e.g. `uuid` in #7255, `agent_last_seen_at` in #4377), but the Swagger definitions were never updated. As a result, generated API clients get incorrect or missing types. This change fixes that by aligning the schemas with the implementation. **Fixes #13692** ## Type of change Please delete options that are not relevant. - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality not to work as expected) - [x] This change requires a documentation update ## How Has This Been Tested? - Compared each jbuilder view (`app/views/public/api/v1/models/_conversation.json.jbuilder`, `_message.json.jbuilder`, `_contact.json.jbuilder`) field-by-field against the Swagger YAML definitions. - Cross-referenced Ruby model enums (`Conversation.status`, `Attachment.file_type`, `Message.message_type`) for enum values. - Ran the swagger build (via the project’s `rake swagger:build` logic / `json_refs` resolution) to regenerate `swagger.json` and tag group files; confirmed the generated schemas contain the correct fields and types. - No runtime tests were run; this is a documentation/schema-only change. ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas *(N/A: schema definitions)* - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works *(N/A: documentation/schema only)* - [ ] New and existing unit tests pass locally with my changes *(N/A: no code under test)* - [x] Any dependent changes have been merged and published in downstream modules *(N/A: none)* --- ## Change summary (for reference) ### `public_conversation` - Added missing fields: `uuid`, `status`, `contact_last_seen_at`, `agent_last_seen_at` - Fixed `inbox_id` type from `string` to `integer` - Fixed `messages` items `$ref` from `message` to `public_message` - Added property details for embedded `contact` object (`id`, `name`, `email`, `phone_number`) - Added `status` enum: `open`, `resolved`, `pending`, `snoozed` ### `public_message` - Fixed `id`, `message_type`, `created_at`, `conversation_id` types (string → integer where applicable) - Fixed `content_attributes` type from `string` to `object` - Added property details for `attachments` items and `sender` object - Added `file_type` and `sender.type` enums ### `public_contact` - Added missing `phone_number` field --------- Co-authored-by: Sojan Jose <sojan@pepalo.com>
94 lines
2.1 KiB
YAML
94 lines
2.1 KiB
YAML
type: object
|
|
additionalProperties: true
|
|
description: Full serialized contact record returned when the public API renders a Contact model directly.
|
|
properties:
|
|
id:
|
|
type: integer
|
|
description: Id of the contact
|
|
name:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Name of the contact when available
|
|
email:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Email of the contact
|
|
phone_number:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Phone number of the contact
|
|
identifier:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Identifier of the contact
|
|
blocked:
|
|
type: boolean
|
|
description: Whether the contact is blocked
|
|
additional_attributes:
|
|
type:
|
|
- object
|
|
- 'null'
|
|
description: Additional attributes of the contact when present
|
|
custom_attributes:
|
|
type:
|
|
- object
|
|
- 'null'
|
|
description: Custom attributes of the contact when present
|
|
contact_type:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Contact type of the contact when available
|
|
country_code:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Country code of the contact
|
|
last_activity_at:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Last activity timestamp of the contact in ISO 8601 format
|
|
created_at:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Created timestamp of the contact in ISO 8601 format
|
|
updated_at:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Updated timestamp of the contact in ISO 8601 format
|
|
last_name:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Last name of the contact
|
|
middle_name:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Middle name of the contact
|
|
location:
|
|
type:
|
|
- string
|
|
- 'null'
|
|
description: Location of the contact
|
|
account_id:
|
|
type: integer
|
|
description: Account id of the contact
|
|
company_id:
|
|
type:
|
|
- integer
|
|
- 'null'
|
|
description: Company id of the contact
|
|
label_list:
|
|
type: array
|
|
description: Labels applied to the contact
|
|
items:
|
|
type: string
|