{"note":"OpenAPI conversion -- returning structured metadata","name":"hubspot-conversations","description":"Conversations Inbox & Messages","version":"v3","base_url":"https://api.hubapi.com","endpoints":18,"raw":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Conversations Inbox & Messages\n@base https://api.hubapi.com\n@version v3\n@auth OAuth2 | ApiKey private-app in header\n@endpoints 18\n@toc conversations(18)\n\n@endpoint PUT /conversations/conversations/v3/threads/{threadId}/assignee\n@required {threadId: int(int64), actorId: str}\n@returns(200) {archived: bool, assignedTo: str, associatedContactId: str, closedAt: str(date-time), createdAt: str(date-time), id: str, inboxId: str, latestMessageReceivedTimestamp: str(date-time), latestMessageSentTimestamp: str(date-time), latestMessageTimestamp: str(date-time), originalChannelAccountId: str, originalChannelId: str, spam: bool, status: str, threadAssociations: map{associatedTicketId: str}} # successful operation\n\n@endpoint DELETE /conversations/conversations/v3/threads/{threadId}/assignee\n@required {threadId: int(int64)}\n@returns(204) No content\n\n@endpoint POST /conversations/v3/conversations/actors/batch/read\n@desc Get a group of actors\n@required {inputs: [str]}\n@optional {property: str}\n@returns(200) {completedAt: str(date-time), links: map, requestedAt: str(date-time), results: [any], startedAt: str(date-time), status: str} # successful operation\n@returns(207) {completedAt: str(date-time), errors: [map], links: map, numErrors: int(int32), requestedAt: str(date-time), results: [any], startedAt: str(date-time), status: str} # multiple statuses\n\n@endpoint GET /conversations/v3/conversations/actors/{actorId}\n@desc Get a single actor\n@required {actorId: str}\n@optional {property: str}\n@returns(200) successful operation\n\n@endpoint GET /conversations/v3/conversations/channel-accounts\n@desc Get channel accounts\n@optional {after: str # The paging cursor token of the last successfully read resource will be returned as the `paging.next.after` JSON property of a paged response containing more results., archived: bool # Whether to return only results that have been archived., channelId: [int(int32)], defaultPageLength: int(int32), inboxId: [int(int32)], limit: int(int32) # The maximum number of results to display per page., sort: [str]}\n@returns(200) {paging: map{next: map{after: str, link: str}, prev: map{before: str, link: str}}, results: [map], total: int(int32)} # successful operation\n\n@endpoint GET /conversations/v3/conversations/channel-accounts/{channelAccountId}\n@desc Get a single channel account\n@required {channelAccountId: int(int64)}\n@optional {archived: bool=false # Whether to return only results that have been archived.}\n@returns(200) {active: bool, archived: bool, archivedAt: str(date-time), authorized: bool, channelId: str, createdAt: str(date-time), deliveryIdentifier: map{type: str, value: str}, id: str, inboxId: str, name: str} # successful operation\n\n@endpoint GET /conversations/v3/conversations/channels\n@desc Get channels\n@optional {after: str # The paging cursor token of the last successfully read resource will be returned as the `paging.next.after` JSON property of a paged response containing more results., defaultPageLength: int(int32), limit: int(int32) # The maximum number of results to display per page., sort: [str]}\n@returns(200) {paging: map{next: map{after: str, link: str}, prev: map{before: str, link: str}}, results: [map], total: int(int32)} # successful operation\n\n@endpoint GET /conversations/v3/conversations/channels/{channelId}\n@desc Get a single channel\n@required {channelId: int(int32)}\n@returns(200) {id: str, name: str} # successful operation\n\n@endpoint GET /conversations/v3/conversations/inboxes\n@desc Get conversations inboxes\n@optional {after: str # The paging cursor token of the last successfully read resource will be returned as the `paging.next.after` JSON property of a paged response containing more results., archived: bool # Whether to return only results that have been archived., defaultPageLength: int(int32), limit: int(int32) # The maximum number of results to display per page., sort: [str]}\n@returns(200) {paging: map{next: map{after: str, link: str}, prev: map{before: str, link: str}}, results: [map], total: int(int32)} # successful operation\n\n@endpoint GET /conversations/v3/conversations/inboxes/{inboxId}\n@desc Get a single conversations inbox\n@required {inboxId: int(int32)}\n@optional {archived: bool=false # Whether to return only results that have been archived.}\n@returns(200) {archived: bool, archivedAt: str(date-time), createdAt: str(date-time), id: str, name: str, type: str, updatedAt: str(date-time)} # successful operation\n\n@endpoint GET /conversations/v3/conversations/threads\n@desc Get threads\n@optional {after: str # The paging cursor token of the last successfully read resource will be returned as the `paging.next.after` JSON property of a paged response containing more results., archived: bool # Whether to return only results that have been archived., associatedContactId: int(int64), associatedTicketId: int(int64), association: [str], inboxId: [int(int32)], latestMessageTimestampAfter: str(date-time), limit: int(int32) # The maximum number of results to display per page., property: str, sort: [str], threadStatus: str(CLOSED/OPEN)}\n@returns(200) {paging: map{next: map{after: str, link: str}}, results: [map]} # successful operation\n\n@endpoint GET /conversations/v3/conversations/threads/{threadId}\n@desc Get a single thread\n@required {threadId: int(int64)}\n@optional {archived: bool # Whether to return only results that have been archived., association: [str], property: str}\n@returns(200) {archived: bool, assignedTo: str, associatedContactId: str, closedAt: str(date-time), createdAt: str(date-time), id: str, inboxId: str, latestMessageReceivedTimestamp: str(date-time), latestMessageSentTimestamp: str(date-time), latestMessageTimestamp: str(date-time), originalChannelAccountId: str, originalChannelId: str, spam: bool, status: str, threadAssociations: map{associatedTicketId: str}} # successful operation\n\n@endpoint DELETE /conversations/v3/conversations/threads/{threadId}\n@desc Archives a thread\n@required {threadId: int(int64)}\n@returns(204) No content\n\n@endpoint PATCH /conversations/v3/conversations/threads/{threadId}\n@desc Update a thread\n@required {threadId: int(int64)}\n@optional {archived: bool # Whether to return only results that have been archived., archived: bool # Whether this thread is archived. Set to false to restore the thread., status: str(CLOSED/OPEN) # The thread's status: `OPEN` or `CLOSED`.}\n@returns(200) {archived: bool, assignedTo: str, associatedContactId: str, closedAt: str(date-time), createdAt: str(date-time), id: str, inboxId: str, latestMessageReceivedTimestamp: str(date-time), latestMessageSentTimestamp: str(date-time), latestMessageTimestamp: str(date-time), originalChannelAccountId: str, originalChannelId: str, spam: bool, status: str, threadAssociations: map{associatedTicketId: str}} # successful operation\n\n@endpoint GET /conversations/v3/conversations/threads/{threadId}/messages\n@desc Get message history for a thread\n@required {threadId: int(int64)}\n@optional {after: str # The paging cursor token of the last successfully read resource will be returned as the `paging.next.after` JSON property of a paged response containing more results., archived: bool # Whether to return only results that have been archived., limit: int(int32) # The maximum number of results to display per page., property: str, sort: [str]}\n@returns(200) {paging: map{next: map{after: str, link: str}}, results: [any]} # successful operation\n\n@endpoint POST /conversations/v3/conversations/threads/{threadId}/messages\n@desc Send a message to a thread\n@required {threadId: int(int64)}\n@returns(201) successful operation\n\n@endpoint GET /conversations/v3/conversations/threads/{threadId}/messages/{messageId}\n@desc Get a single message\n@required {messageId: str, threadId: int(int64)}\n@optional {property: str}\n@returns(200) successful operation\n\n@endpoint GET /conversations/v3/conversations/threads/{threadId}/messages/{messageId}/original-content\n@desc Get the original content of a single message\n@required {messageId: str, threadId: int(int64)}\n@optional {property: str}\n@returns(200) {richText: str, text: str} # successful operation\n\n@end\n"}