Skip to main content

Actions

The ballerinax/hubspot.crm.engagement.meeting package exposes the following clients:

ClientPurpose
ClientHubSpot Meetings API v3: meeting CRUD, batch operations, and search.

Client

HubSpot Meetings API v3: meeting CRUD, batch operations, and search.

Configuration

FieldTypeDefaultDescription
authhttp:BearerTokenConfig|OAuth2RefreshTokenGrantConfig|ApiKeysConfigRequiredAuthentication configuration: OAuth 2.0 refresh token grant, bearer token, or API key.
httpVersionhttp:HttpVersionhttp:HTTP_2_0HTTP protocol version.
timeoutdecimal30Request timeout in seconds.
retryConfighttp:RetryConfig()Retry configuration for failed requests.
secureSockethttp:ClientSecureSocket()SSL/TLS configuration.
proxyhttp:ProxyConfig()Proxy server configuration.
circuitBreakerhttp:CircuitBreakerConfig()Circuit breaker configuration for fault tolerance.
compressionhttp:Compressionhttp:COMPRESSION_AUTOContent compression setting.
validationbooleantrueEnable or disable payload validation.

Initializing the client

import ballerinax/hubspot.crm.engagement.meeting as hsmeetings;

configurable string clientId = ?;
configurable string clientSecret = ?;
configurable string refreshToken = ?;

hsmeetings:Client meetingsClient = check new ({
auth: {
clientId: clientId,
clientSecret: clientSecret,
refreshToken: refreshToken,
refreshUrl: "https://api.hubapi.com/oauth/v1/token"
}
});

Operations

Meeting CRUD

List meetings

Retrieves a paginated list of meeting engagements with optional property and association filters.

Parameters:

NameTypeRequiredDescription
headersmap<string|string[]>NoOptional HTTP headers.
queriesGetCrmV3ObjectsMeetingsGetPageQueriesNoQuery parameters including limit, after, properties, associations, and archived.

Returns: CollectionResponseSimplePublicObjectWithAssociationsForwardPaging|error

Sample code:

hsmeetings:CollectionResponseSimplePublicObjectWithAssociationsForwardPaging response =
check meetingsClient->/.get(queries = {'limit: 10, properties: ["hs_meeting_title", "hs_meeting_start_time"]});

Sample response:

{
"results": [
{
"id": "12345678901",
"properties": {
"hs_meeting_title": "Quarterly Review",
"hs_meeting_start_time": "2026-03-20T10:00:00Z",
"hs_createdate": "2026-03-15T08:00:00.000Z",
"hs_lastmodifieddate": "2026-03-15T08:00:00.000Z",
"hs_object_id": "12345678901"
},
"createdAt": "2026-03-15T08:00:00.000Z",
"updatedAt": "2026-03-15T08:00:00.000Z",
"archived": false
}
],
"paging": {
"next": {
"after": "12345678902",
"link": "https://api.hubapi.com/crm/v3/objects/meetings?after=12345678902"
}
}
}
Create a meeting

Creates a new meeting engagement with the specified properties and optional associations.

Parameters:

NameTypeRequiredDescription
payloadSimplePublicObjectInputForCreateYesMeeting properties and associations.
headersmap<string|string[]>NoOptional HTTP headers.

Returns: SimplePublicObject|error

Sample code:

hsmeetings:SimplePublicObject meeting = check meetingsClient->/.post({
properties: {
"hs_timestamp": "2026-03-20T10:00:00.000Z",
"hs_meeting_title": "Project Kickoff",
"hs_meeting_body": "Discuss project scope and deliverables",
"hs_meeting_start_time": "2026-03-20T10:00:00.000Z",
"hs_meeting_end_time": "2026-03-20T11:00:00.000Z",
"hs_meeting_location": "Conference Room A",
"hs_meeting_outcome": "SCHEDULED"
},
associations: [
{
types: [
{
associationCategory: "HUBSPOT_DEFINED",
associationTypeId: 200
}
],
to: {
id: contactId
}
}
]
});

Sample response:

{
"id": "12345678902",
"properties": {
"hs_timestamp": "2026-03-20T10:00:00.000Z",
"hs_meeting_title": "Project Kickoff",
"hs_meeting_body": "Discuss project scope and deliverables",
"hs_meeting_start_time": "2026-03-20T10:00:00.000Z",
"hs_meeting_end_time": "2026-03-20T11:00:00.000Z",
"hs_meeting_location": "Conference Room A",
"hs_meeting_outcome": "SCHEDULED",
"hs_createdate": "2026-03-15T08:00:00.000Z",
"hs_lastmodifieddate": "2026-03-15T08:00:00.000Z",
"hs_object_id": "12345678902"
},
"createdAt": "2026-03-15T08:00:00.000Z",
"updatedAt": "2026-03-15T08:00:00.000Z",
"archived": false
}
Get a meeting by ID

Retrieves a single meeting engagement by its ID, with optional property and association expansion.

Parameters:

NameTypeRequiredDescription
meetingIdstringYesThe HubSpot meeting ID.
headersmap<string|string[]>NoOptional HTTP headers.
queriesGetCrmV3ObjectsMeetingsMeetingIdGetByIdQueriesNoQuery parameters including properties, associations, and archived.

Returns: SimplePublicObjectWithAssociations|error

Sample code:

hsmeetings:SimplePublicObjectWithAssociations meeting =
check meetingsClient->/[meetingId].get(queries = {properties: ["hs_meeting_title", "hs_meeting_start_time"]});

Sample response:

{
"id": "12345678902",
"properties": {
"hs_meeting_title": "Project Kickoff",
"hs_meeting_start_time": "2026-03-20T10:00:00.000Z",
"hs_createdate": "2026-03-15T08:00:00.000Z",
"hs_lastmodifieddate": "2026-03-15T08:00:00.000Z",
"hs_object_id": "12345678902"
},
"createdAt": "2026-03-15T08:00:00.000Z",
"updatedAt": "2026-03-15T08:00:00.000Z",
"archived": false
}
Update a meeting

Updates properties of an existing meeting engagement.

Parameters:

NameTypeRequiredDescription
meetingIdstringYesThe HubSpot meeting ID.
payloadSimplePublicObjectInputYesProperties to update.
headersmap<string|string[]>NoOptional HTTP headers.
queriesPatchCrmV3ObjectsMeetingsMeetingIdUpdateQueriesNoQuery parameters including optional idProperty.

Returns: SimplePublicObject|error

Sample code:

hsmeetings:SimplePublicObject updated = check meetingsClient->/[meetingId].patch({
properties: {
"hs_meeting_title": "Updated Project Kickoff",
"hs_meeting_location": "Virtual: Zoom"
}
});

Sample response:

{
"id": "12345678902",
"properties": {
"hs_meeting_title": "Updated Project Kickoff",
"hs_meeting_location": "Virtual: Zoom",
"hs_createdate": "2026-03-15T08:00:00.000Z",
"hs_lastmodifieddate": "2026-03-16T09:30:00.000Z",
"hs_object_id": "12345678902"
},
"createdAt": "2026-03-15T08:00:00.000Z",
"updatedAt": "2026-03-16T09:30:00.000Z",
"archived": false
}
Delete a meeting

Archives (soft-deletes) a meeting engagement by its ID.

Parameters:

NameTypeRequiredDescription
meetingIdstringYesThe HubSpot meeting ID.
headersmap<string|string[]>NoOptional HTTP headers.

Returns: error?

Sample code:

check meetingsClient->/[meetingId].delete();

Batch operations

Batch create meetings

Creates multiple meeting engagements in a single request.

Parameters:

NameTypeRequiredDescription
payloadBatchInputSimplePublicObjectInputForCreateYesArray of meeting inputs with properties and associations.
headersmap<string|string[]>NoOptional HTTP headers.

Returns: BatchResponseSimplePublicObject|BatchResponseSimplePublicObjectWithErrors|error

Sample code:

hsmeetings:BatchResponseSimplePublicObject|hsmeetings:BatchResponseSimplePublicObjectWithErrors response =
check meetingsClient->/batch/create.post({
inputs: [
{
properties: {
"hs_timestamp": "2026-03-21T14:00:00.000Z",
"hs_meeting_title": "Sprint Planning",
"hs_meeting_start_time": "2026-03-21T14:00:00.000Z",
"hs_meeting_end_time": "2026-03-21T15:00:00.000Z"
},
associations: []
},
{
properties: {
"hs_timestamp": "2026-03-22T09:00:00.000Z",
"hs_meeting_title": "Design Review",
"hs_meeting_start_time": "2026-03-22T09:00:00.000Z",
"hs_meeting_end_time": "2026-03-22T10:00:00.000Z"
},
associations: []
}
]
});

Sample response:

{
"completedAt": "2026-03-15T08:01:00.000Z",
"startedAt": "2026-03-15T08:00:59.000Z",
"status": "COMPLETE",
"results": [
{
"id": "12345678903",
"properties": {
"hs_meeting_title": "Sprint Planning",
"hs_meeting_start_time": "2026-03-21T14:00:00.000Z",
"hs_meeting_end_time": "2026-03-21T15:00:00.000Z"
},
"createdAt": "2026-03-15T08:01:00.000Z",
"updatedAt": "2026-03-15T08:01:00.000Z",
"archived": false
},
{
"id": "12345678904",
"properties": {
"hs_meeting_title": "Design Review",
"hs_meeting_start_time": "2026-03-22T09:00:00.000Z",
"hs_meeting_end_time": "2026-03-22T10:00:00.000Z"
},
"createdAt": "2026-03-15T08:01:00.000Z",
"updatedAt": "2026-03-15T08:01:00.000Z",
"archived": false
}
]
}
Batch read meetings

Reads multiple meeting engagements by their IDs in a single request.

Parameters:

NameTypeRequiredDescription
payloadBatchReadInputSimplePublicObjectIdYesMeeting IDs and properties to retrieve.
headersmap<string|string[]>NoOptional HTTP headers.
queriesPostCrmV3ObjectsMeetingsBatchReadReadQueriesNoQuery parameters including archived.

Returns: BatchResponseSimplePublicObject|BatchResponseSimplePublicObjectWithErrors|error

Sample code:

hsmeetings:BatchResponseSimplePublicObject|hsmeetings:BatchResponseSimplePublicObjectWithErrors response =
check meetingsClient->/batch/read.post({
inputs: [{id: meetingId1}, {id: meetingId2}],
properties: ["hs_meeting_title", "hs_meeting_start_time"],
propertiesWithHistory: []
});

Sample response:

{
"completedAt": "2026-03-15T08:01:00.000Z",
"startedAt": "2026-03-15T08:00:59.000Z",
"status": "COMPLETE",
"results": [
{
"id": "12345678903",
"properties": {
"hs_meeting_title": "Sprint Planning",
"hs_meeting_start_time": "2026-03-21T14:00:00.000Z"
},
"createdAt": "2026-03-15T08:01:00.000Z",
"updatedAt": "2026-03-15T08:01:00.000Z",
"archived": false
}
]
}
Batch update meetings

Updates properties of multiple meeting engagements in a single request.

Parameters:

NameTypeRequiredDescription
payloadBatchInputSimplePublicObjectBatchInputYesArray of meeting IDs and properties to update.
headersmap<string|string[]>NoOptional HTTP headers.

Returns: BatchResponseSimplePublicObject|BatchResponseSimplePublicObjectWithErrors|error

Sample code:

hsmeetings:BatchResponseSimplePublicObject|hsmeetings:BatchResponseSimplePublicObjectWithErrors response =
check meetingsClient->/batch/update.post({
inputs: [
{
id: meetingId1,
properties: {
"hs_meeting_title": "Updated Sprint Planning"
}
},
{
id: meetingId2,
properties: {
"hs_meeting_outcome": "COMPLETED"
}
}
]
});

Sample response:

{
"completedAt": "2026-03-16T10:00:00.000Z",
"startedAt": "2026-03-16T09:59:59.000Z",
"status": "COMPLETE",
"results": [
{
"id": "12345678903",
"properties": {
"hs_meeting_title": "Updated Sprint Planning"
},
"createdAt": "2026-03-15T08:01:00.000Z",
"updatedAt": "2026-03-16T10:00:00.000Z",
"archived": false
}
]
}
Batch archive meetings

Archives (soft-deletes) multiple meeting engagements in a single request.

Parameters:

NameTypeRequiredDescription
payloadBatchInputSimplePublicObjectIdYesArray of meeting IDs to archive.
headersmap<string|string[]>NoOptional HTTP headers.

Returns: error?

Sample code:

check meetingsClient->/batch/archive.post({
inputs: [{id: meetingId1}, {id: meetingId2}]
});
Batch upsert meetings

Creates or updates multiple meeting engagements in a single request based on a unique identifier.

Parameters:

NameTypeRequiredDescription
payloadBatchInputSimplePublicObjectBatchInputUpsertYesArray of meeting inputs with IDs and properties for upsert.
headersmap<string|string[]>NoOptional HTTP headers.

Returns: BatchResponseSimplePublicUpsertObject|BatchResponseSimplePublicUpsertObjectWithErrors|error

Sample code:

hsmeetings:BatchResponseSimplePublicUpsertObject|hsmeetings:BatchResponseSimplePublicUpsertObjectWithErrors response =
check meetingsClient->/batch/upsert.post({
inputs: [
{
id: "12345678903",
properties: {
"hs_meeting_title": "Upserted Meeting",
"hs_meeting_start_time": "2026-03-25T10:00:00.000Z",
"hs_meeting_end_time": "2026-03-25T11:00:00.000Z"
}
}
]
});

Sample response:

{
"completedAt": "2026-03-16T10:00:00.000Z",
"startedAt": "2026-03-16T09:59:59.000Z",
"status": "COMPLETE",
"results": [
{
"id": "12345678903",
"properties": {
"hs_meeting_title": "Upserted Meeting",
"hs_meeting_start_time": "2026-03-25T10:00:00.000Z",
"hs_meeting_end_time": "2026-03-25T11:00:00.000Z"
},
"createdAt": "2026-03-15T08:01:00.000Z",
"updatedAt": "2026-03-16T10:00:00.000Z",
"new": false,
"archived": false
}
]
}
Search meetings

Searches meeting engagements using filters, query strings, and sorting criteria.

Parameters:

NameTypeRequiredDescription
payloadPublicObjectSearchRequestYesSearch request with filters, query, sorts, properties, and pagination.
headersmap<string|string[]>NoOptional HTTP headers.

Returns: CollectionResponseWithTotalSimplePublicObjectForwardPaging|error

Sample code:

hsmeetings:CollectionResponseWithTotalSimplePublicObjectForwardPaging response =
check meetingsClient->/search.post({
filterGroups: [
{
filters: [
{
propertyName: "hs_meeting_title",
operator: "CONTAINS_TOKEN",
value: "Kickoff"
}
]
}
],
properties: ["hs_meeting_title", "hs_meeting_start_time", "hs_meeting_outcome"],
'limit: 5
});

Sample response:

{
"total": 1,
"results": [
{
"id": "12345678902",
"properties": {
"hs_meeting_title": "Project Kickoff",
"hs_meeting_start_time": "2026-03-20T10:00:00.000Z",
"hs_meeting_outcome": "SCHEDULED",
"hs_createdate": "2026-03-15T08:00:00.000Z",
"hs_lastmodifieddate": "2026-03-15T08:00:00.000Z",
"hs_object_id": "12345678902"
},
"createdAt": "2026-03-15T08:00:00.000Z",
"updatedAt": "2026-03-15T08:00:00.000Z",
"archived": false
}
]
}