eToro Comments and Replies API

The Comments and Replies API from eToro — 4 operation(s) for comments and replies.

OpenAPI Specification

etoro-comments-and-replies-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Deprecated eToro Public API operations Agent Portfolios Comments and Replies API
  version: v1.158.0
  description: Snapshot of API operations that existed in the previous docs OpenAPI file and are no longer present in the current upstream Swagger.
tags:
- name: Comments and Replies
paths:
  /api/v1/posts/{postId}/comments:
    post:
      tags:
      - Comments and Replies
      summary: Create a comment on a post
      description: Creates a new comment on a specific discussion post. Comments can include text, mentions, tags, and attachments.
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: 29312cd0-780c-418d-93f2-879c5e95cf1d
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: postId
        in: path
        description: ID of the post to comment on (UUID)
        required: true
        schema:
          type: string
          format: uuid
        example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
      requestBody:
        description: Comment creation details. `message` is required; `attachments` is optional.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentCreateRequest'
            examples:
              textComment:
                summary: Plain text comment
                value:
                  message: Great analysis — I've been watching $TSLA closely too.
              commentWithAttachment:
                summary: Comment with an image attachment
                value:
                  message: Check out this chart I made!
                  attachments:
                  - url: https://cdn.etoro.com/rich-media/images/johndoe/abc-2025-01-15.jpg
                    mediaType: Image
      responses:
        '201':
          description: Comment created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
        '401':
          description: Authentication required
        '404':
          description: Parent post not found
        '422':
          description: Validation failed — missing message body or spam classification rejected the content
      operationId: createACommentOnAPost
    get:
      tags:
      - Comments and Replies
      summary: List comments on a post
      description: Returns a paginated list of top-level comments on a post. Soft-deleted comments are included with isDeleted=true and blanked content so reply trees remain navigable. Authentication is optional — unauthenticated requests omit requesterContext.
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: 2f88fea0-f7af-4f63-9ce8-edb4ffef7a42
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: postId
        in: path
        description: ID of the parent post (UUID)
        schema:
          type: string
          format: uuid
        example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        required: true
      - name: take
        in: query
        description: Number of items to return (1–100, default 20)
        schema:
          type: integer
          default: 20
          minimum: 1
          maximum: 100
        example: 20
      - name: offsetEntityId
        in: query
        description: Opaque cursor from previous response for stable paging
        schema:
          type: string
        example: b2c3d4e5-f6a7-4890-bcde-f23456789012
      - name: order
        in: query
        description: Sort order
        schema:
          type: string
          enum:
          - Asc
          - Desc
          default: Desc
        example: Desc
      - name: badgesExperimentIsEnabled
        in: query
        description: Include user badges in the response
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Paginated comment list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentsResponse'
        '404':
          description: Post not found
      operationId: listCommentsOnAPost
  /api/v1/posts/{postId}/comments/{commentId}:
    put:
      tags:
      - Comments and Replies
      summary: Update a comment
      description: Edits the authenticated user's own comment in-place. Sets editStatus to Edited. Emotion counts, repliesCount, and created are preserved. Owner is derived from the auth token.
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: f77ef9ed-152e-4386-9bb9-a98ae8d7a612
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: postId
        in: path
        description: ID of the parent post (UUID)
        schema:
          type: string
          format: uuid
        example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        required: true
      - name: commentId
        in: path
        description: ID of the comment (UUID)
        schema:
          type: string
          format: uuid
        example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        required: true
      requestBody:
        description: Updated comment content
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentUpdateRequest'
      responses:
        '200':
          description: Updated comment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
        '401':
          description: Authentication required
        '403':
          description: Requester is not the comment owner
        '404':
          description: Post or comment not found
        '422':
          description: Validation failed — missing message body or spam classification rejected the content
      operationId: updateAComment
    delete:
      tags:
      - Comments and Replies
      summary: Soft-delete a comment
      description: Soft-deletes the authenticated user's own comment. Sets isDeleted=true and blanks message text and attachments. Replies are preserved and the parent post's totalCommentsAndReplies is decremented only by the deleted node.
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: 643b333f-b00f-43a2-a033-8d6a36f824ea
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: postId
        in: path
        description: ID of the parent post (UUID)
        schema:
          type: string
          format: uuid
        example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        required: true
      - name: commentId
        in: path
        description: ID of the comment (UUID)
        schema:
          type: string
          format: uuid
        example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        required: true
      responses:
        '204':
          description: Comment deleted successfully
        '401':
          description: Authentication required
        '403':
          description: Requester is not the comment owner
        '404':
          description: Post or comment not found
      operationId: softDeleteAComment
  /api/v1/posts/{postId}/comments/{commentId}/replies:
    get:
      tags:
      - Comments and Replies
      summary: List replies on a comment
      description: Returns a paginated list of replies nested under a specific comment. Authentication is optional.
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: 967bd734-c758-446a-a447-d88ae65f4346
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: postId
        in: path
        description: ID of the parent post (UUID)
        schema:
          type: string
          format: uuid
        example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        required: true
      - name: commentId
        in: path
        description: ID of the comment (UUID)
        schema:
          type: string
          format: uuid
        example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        required: true
      - name: take
        in: query
        description: Number of items to return (1–100, default 20)
        schema:
          type: integer
          default: 20
          minimum: 1
          maximum: 100
        example: 20
      - name: offsetEntityId
        in: query
        description: Opaque cursor from previous response for stable paging
        schema:
          type: string
        example: b2c3d4e5-f6a7-4890-bcde-f23456789012
      - name: order
        in: query
        description: Sort order
        schema:
          type: string
          enum:
          - Asc
          - Desc
          default: Desc
        example: Desc
      - name: badgesExperimentIsEnabled
        in: query
        description: Include user badges in the response
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Paginated reply list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentsResponse'
        '404':
          description: Post or comment not found
      operationId: listRepliesOnAComment
    post:
      tags:
      - Comments and Replies
      summary: Create a reply
      description: Creates a reply nested under an existing comment. Replies are 1-level deep — replying to a reply attaches to the same parent comment with an inline @mention to the reply author. Increments parent comment's repliesCount and the post's totalCommentsAndReplies.
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: 4de03db6-51fa-4ce3-a54f-50f846eed5ea
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: postId
        in: path
        description: ID of the parent post (UUID)
        schema:
          type: string
          format: uuid
        example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        required: true
      - name: commentId
        in: path
        description: ID of the comment (UUID)
        schema:
          type: string
          format: uuid
        example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        required: true
      requestBody:
        description: Reply content. `message` is required; `attachments` is optional.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentCreateRequest'
            examples:
              textReply:
                summary: Plain text reply
                value:
                  message: Totally agree — and the latest earnings back this up.
              replyWithAttachment:
                summary: Reply with an image attachment
                value:
                  message: Here's the chart I was talking about!
                  attachments:
                  - url: https://cdn.etoro.com/rich-media/images/johndoe/abc-2025-01-15.jpg
                    mediaType: Image
      responses:
        '201':
          description: Reply created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
        '401':
          description: Authentication required
        '404':
          description: Post or comment not found
        '422':
          description: Validation failed — missing message body or spam classification rejected the content
      operationId: createAReply
  /api/v1/posts/{postId}/comments/{commentId}/replies/{replyId}:
    put:
      tags:
      - Comments and Replies
      summary: Update a reply
      description: Edits the authenticated user's own reply in-place. Same semantics as updating a comment.
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: 8d810c19-fec7-4461-9774-fb038729fee6
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: postId
        in: path
        description: ID of the parent post (UUID)
        schema:
          type: string
          format: uuid
        example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        required: true
      - name: commentId
        in: path
        description: ID of the comment (UUID)
        schema:
          type: string
          format: uuid
        example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        required: true
      - name: replyId
        in: path
        description: ID of the reply (UUID)
        schema:
          type: string
          format: uuid
        example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        required: true
      requestBody:
        description: Updated reply content
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentUpdateRequest'
      responses:
        '200':
          description: Updated reply
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
        '401':
          description: Authentication required
        '403':
          description: Requester is not the reply owner
        '404':
          description: Post, comment, or reply not found
        '422':
          description: Validation failed — missing message body or spam classification rejected the content
      operationId: updateAReply
    delete:
      tags:
      - Comments and Replies
      summary: Soft-delete a reply
      description: Soft-deletes the authenticated user's own reply.
      parameters:
      - name: x-request-id
        in: header
        required: true
        schema:
          type: string
          format: uuid
          example: a03cae57-ccf4-4635-b909-de9e7921e2c5
        description: A unique request identifier.
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
        description: API key for authentication.
      - name: x-user-key
        in: header
        required: true
        schema:
          type: string
          format: password
          example: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
        description: User-specific authentication key.
      - name: postId
        in: path
        description: ID of the parent post (UUID)
        schema:
          type: string
          format: uuid
        example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        required: true
      - name: commentId
        in: path
        description: ID of the comment (UUID)
        schema:
          type: string
          format: uuid
        example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        required: true
      - name: replyId
        in: path
        description: ID of the reply (UUID)
        schema:
          type: string
          format: uuid
        example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        required: true
      responses:
        '204':
          description: Reply deleted successfully
        '401':
          description: Authentication required
        '403':
          description: Requester is not the reply owner
        '404':
          description: Post, comment, or reply not found
      operationId: softDeleteAReply
components:
  schemas:
    User:
      type: object
      description: eToro user profile (slim projection)
      properties:
        id:
          type: string
          description: User's GCID (string form)
          example: '7890'
        username:
          type: string
          description: Unique username
          example: johndoe
        firstName:
          type: string
          description: First name
          example: John
        lastName:
          type: string
          description: Last name
          example: Doe
        avatar:
          type: object
          description: Profile picture URLs
          properties:
            small:
              type: string
              description: 32 px avatar URL
              example: https://etoro-cdn.etorostatic.com/avatars/150X150/johndoe.jpg
            medium:
              type: string
              description: 64 px avatar URL
              example: https://etoro-cdn.etorostatic.com/avatars/200X200/johndoe.jpg
            large:
              type: string
              description: 128 px avatar URL
              example: https://etoro-cdn.etorostatic.com/avatars/300X300/johndoe.jpg
            svg:
              type: object
              nullable: true
              description: SVG avatar with brand colours (null when not available)
              properties:
                url:
                  type: string
                  description: SVG URL
                  example: https://etoro-cdn.etorostatic.com/avatars/svg/johndoe.svg
                backgroundColor:
                  type: string
                  description: Background colour hex
                  example: '#2196F3'
                textColor:
                  type: string
                  description: Text colour hex
                  example: '#FFFFFF'
        roles:
          type: array
          description: User roles
          items:
            type: string
            enum:
            - Regular
            - PI
            - Moderator
            - Anonymous
            - eToroTeam
            - eTorian
            - CopyPortfolio
            - Depositor
            - Admin
            - Verified
            - Analyst
          example:
          - Regular
        isBlocked:
          type: boolean
          description: Owner has blocked the requester
          example: false
        isPrivate:
          type: boolean
          description: User's profile is private
          example: false
        countryCode:
          type: integer
          description: ISO numeric country code
          example: 840
        piLevel:
          type: integer
          description: Popular Investor level (0 = not PI)
          example: 0
    Attachment:
      type: object
      description: Media or link attachment
      properties:
        url:
          type: string
          description: Full URL of the attachment
          example: https://cdn.etoro.com/rich-media/images/johndoe/abc-2025-01-15.jpg
        title:
          type: string
          description: Title of the attachment
          example: Tesla Q4 Earnings Chart
        host:
          type: string
          description: Host domain of the attachment
          example: cdn.etoro.com
        description:
          type: string
          description: Short description of the attachment
          example: Tesla quarterly earnings breakdown
        mediaType:
          type: string
          enum:
          - None
          - Link
          - Image
          - Video
          description: Type of media
          example: Image
        media:
          type: object
          description: Media content details
          properties:
            image:
              type: object
              description: Image dimensions and URL
              properties:
                width:
                  type: integer
                  description: Width in pixels
                  example: 1200
                height:
                  type: integer
                  description: Height in pixels
                  example: 630
                url:
                  type: string
                  description: Image URL
                  example: https://cdn.etoro.com/rich-media/images/johndoe/abc-2025-01-15.jpg
            video:
              type: object
              description: Video source details
              properties:
                videoSourceId:
                  type: string
                  description: External video ID
                  example: dQw4w9WgXcQ
                videoSource:
                  type: string
                  enum:
                  - None
                  - YouTube
                  - Vimeo
                  description: Video provider
                  example: YouTube
                image:
                  type: object
                  description: Video thumbnail
                  properties:
                    width:
                      type: integer
                      description: Thumbnail width in pixels
                      example: 1280
                    height:
                      type: integer
                      description: Thumbnail height in pixels
                      example: 720
                    url:
                      type: string
                      description: Thumbnail URL
                      example: https://img.youtube.com/vi/dQw4w9WgXcQ/hqdefault.jpg
    CommentCreateRequest:
      type: object
      description: Request body for creating a comment or reply
      required:
      - message
      properties:
        message:
          type: string
          description: Comment text (max 500 chars)
          example: Great analysis! I agree — the fundamentals are solid.
        attachments:
          $ref: '#/components/schemas/Attachments'
    Market:
      type: object
      description: Financial instrument / market
      properties:
        id:
          type: string
          description: Market identifier
          example: TSLA
        symbolName:
          type: string
          description: Ticker symbol
          example: TSLA
        displayName:
          type: string
          description: Human-readable name
          example: Tesla
        updated:
          type: string
          format: date-time
          nullable: true
          description: Last update timestamp
          example: '2025-01-15T00:00:00Z'
        assetType:
          type: string
          enum:
          - Stocks
          - Bonds
          - ETF
          - Index
          - Warrants
          - Options
          - Futures
          - CFD
          - TRS
          - FOREX
          - CommodityMetals
          - CommodityEnergyAgriculture
          - CryptoCoin
          - NFT
          description: Asset class
          example: Stocks
        internalId:
          type: integer
          description: Internal numeric market ID
          example: 59114
        avatar:
          type: object
          description: Market logo images
          properties:
            small:
              type: string
              description: Small logo URL (32 px)
              example: https://cdn.etoro.com/assets/img/markets/TSLA/small.png
            medium:
              type: string
              description: Medium logo URL (64 px)
              example: https://cdn.etoro.com/assets/img/markets/TSLA/medium.png
            large:
              type: string
              description: Large logo URL (128 px)
              example: https://cdn.etoro.com/assets/img/markets/TSLA/large.png
            svg:
              type: object
              nullable: true
              description: SVG logo with brand colours
              properties:
                url:
                  type: string
                  description: SVG URL
                  example: https://cdn.etoro.com/assets/img/markets/TSLA/logo.svg
                backgroundColor:
                  type: string
                  description: Brand background colour (hex)
                  example: '#CC0000'
                textColor:
                  type: string
                  description: Brand text colour (hex)
                  example: '#FFFFFF'
        application:
          type: string
          enum:
          - eToro
          - Delta
          - Gatsby
          description: Source application
          example: eToro
        metadata:
          type: string
          description: Opaque JSON metadata string
          example: '{}'
        assetTypeId:
          type: integer
          description: Numeric asset type ID
          example: 10
        assetTypeSubCategoryId:
          type: integer
          description: Numeric asset sub-category ID
          example: 101
    Attachments:
      type: array
      description: List of attachments for a post or comment (request body format)
      items:
        type: object
        description: Media or link attachment
        properties:
          url:
            type: string
            description: Full URL of the attachment
            example: https://cdn.etoro.com/rich-media/images/johndoe/abc-2025-01-15.jpg
          title:
            type: string
            description: Title of the attachment
            example: Tesla Q4 Earnings Chart
          host:
            type: string
            description: Host domain of the attachment
            example: cdn.etoro.com
          description:
            type: string
            description: Short description of the attachment
            example: Tesla quarterly earnings breakdown
          mediaType:
            type: string
            enum:
            - None
            - Link
            - Image
            description: Type of media (video not supported for upload)
            example: Image
          media:
            type: object
            description: Media content details (images only)
            properties:
              image:
                type: object
                description: Image dimensions and URL
                properties:
                  width:
                    type: integer
                    description: Width in pixels
                    example: 1200
                  height:
                    type: integer
                    description: Height in pixels
                    example: 630
                  url:
                    type: string
                    description: Image URL
                    example: https://cdn.etoro.com/rich-media/images/johndoe/abc-2025-01-15.jpg
    Comment:
      type: object
      description: A comment (or reply) on a post, wrapped with interaction data
      properties:
        entity:
          type: object
          description: Core comment data
          properties:
            id:
              type: string
              description: Comment ID
              example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
            owner:
              $ref: '#/components/schemas/User'
            obsoleteId:
              type: string
              description: Legacy numeric comment ID
              example: '98765'
            created:
              type: string
              format: date-time
              description: Creation timestamp
              example: '2025-01-15T10:30:00Z'
            updated:
              type: string
              format: date-time
              nullable: true
              description: Last-edited timestamp
              example: '2025-01-15T11:00:00Z'
            message:
              type: object
              description: Post/comment text content
              properties:
                text:
                  type: string
                  description: Text content
                  example: Excited about $TSLA earnings next week!
                languageCode:
                  type: string
                  description: BCP-47 language code
                  example: en
            attachments:
              type: array
              items:
                $ref: '#/components/schemas/Attachment'
            mentions:

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/etoro/refs/heads/main/openapi/etoro-comments-and-replies-api-openapi.yml