action attio_assert_meeting { label: "Find or create a meeting" description: "Finds an existing meeting or creates a new one if it doesn't yet exist. [Please see here](/rest-api/guides/syncing-meetings) for a full guide on syncing meetings to Attio.\n\nThis endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n\nRequired scopes: `meeting:read-write`, `record_permission:read`." provider: attio method: POST path: "/v2/meetings" encoding: json scopes: ["meeting:read-write", "record_permission:read"] input: { type: "object" required: ["data"] properties: { data: { type: "object" required: ["description", "end", "external_ref", "is_all_day", "participants", "start", "title"] properties: { description: { type: "string" description: "The description of the meeting." } end: { description: "When the meeting ends. Use a datetime and optional timezone for non-all day meetings, or a date for all day meetings." type: "object" } external_ref: { description: "A consistent external reference used to match and de-duplicate meetings. Can be either a plain string (for external system IDs) or an object with `ical_uid` and `provider`. If you are writing data into Attio which is based upon calendar events that you have synced from a Google or Microsoft calendar, you must use the iCal format to avoid creating duplicate meetings inside Attio." type: "object" } is_all_day: { type: "boolean" description: "Whether or not the meeting is an all day event. All day events may span multiple days. When true, start and end must use date format. When false, start and end must use datetime with timezone format." } linked_records: { type: "array" description: "A list of records to link to the meeting. Each record is specified by its object (slug or UUID) and record ID (UUID). Attio will automatically link the meeting participants' companies to the meeting; this behavior is asynchronous." items: { type: "object" required: ["object", "record_id"] properties: { object: { type: "string" description: "The slug or UUID of the object that the record being linked belongs to." } record_id: { type: "string" format: "uuid" description: "The UUID of the record being linked." } } } } participants: { type: "array" items: { type: "object" required: ["email_address", "is_organizer", "status"] properties: { email_address: { type: "string" description: "The email address of the participant. New person records and companies will automatically be created based upon the email address values provided." } is_organizer: { description: "Whether or not the participant is the organizer of the meeting." type: "object" } status: { type: "string" description: "The status of the individual meeting participant." enum: ["accepted", "tentative", "declined", "pending"] } } } } start: { description: "When the meeting starts. Use a datetime and optional timezone for non-all day meetings, or a date for all day meetings." type: "object" } title: { type: "string" description: "The title of the meeting." } } } } } output: { type: "object" description: "Success" required: ["data"] properties: { data: { type: "object" required: ["created_at", "created_by_actor", "description", "end", "id", "is_all_day", "linked_records", "participants", "start", "title"] properties: { created_at: { type: "string" description: "Timestamp representing when the meeting was created." } created_by_actor: { type: "object" description: "The actor that created this meeting." properties: { id: { type: "string" description: "An ID to identify the actor." } type: { type: "string" description: "The type of actor. [Read more information on actor types here](/docs/actors)." enum: ["api-token", "workspace-member", "system", "app"] } } } description: { type: "string" description: "The description of the meeting." } end: { type: "object" } id: { type: "object" required: ["meeting_id", "workspace_id"] properties: { meeting_id: { type: "string" format: "uuid" description: "The ID of the Attio meeting." } workspace_id: { type: "string" format: "uuid" description: "The ID of the workspace the meeting belongs to." } } } is_all_day: { type: "boolean" description: "Whether or not the meeting is an all day event. All day events may span multiple days." } linked_records: { type: "array" description: "A list of records that are linked to the meeting. Participants with matching person records are automatically linked to the meeting but other records may also be linked explicitly." items: { type: "object" required: ["object_slug", "object_id", "record_id"] properties: { object_id: { type: "string" format: "uuid" description: "The ID of the object the meeting linked record belongs to." } object_slug: { type: "string" description: "The slug of the object the meeting linked record belongs to." } record_id: { type: "string" format: "uuid" description: "The ID of the meeting linked record." } } } } participants: { type: "array" items: { type: "object" required: ["status", "is_organizer", "email_address"] properties: { email_address: { type: ["string", "null"] description: "The normalized email address of the meeting participant." } is_organizer: { type: "boolean" description: "Whether or not the participant is the organizer of the meeting." } status: { type: "string" description: "The status of the individual meeting participant." enum: ["accepted", "tentative", "declined", "pending"] } } } } start: { type: "object" } title: { type: "string" description: "The title of the meeting." } } } } } }