openapi: 3.2.0 info: title: Lasso Registrant Appointments API description: 'Overview Use this API to manage Registrant, Project, and Inventory data within Lasso CRM.' version: 1.0.39 servers: - url: https://api.lassocrm.com/v1 description: Production endpoint tags: - name: Registrant Appointments paths: /registrants/{registrantId}/appointments: parameters: - in: path name: registrantId required: true schema: type: string get: summary: Retrieve a registrant's appointments operationId: get_registrants_appointments tags: - Registrant Appointments security: - JwtAuthorizer: [] responses: 200: description: Appointments found. content: application/json: schema: type: array items: $ref: '#/components/schemas/AppointmentRead' 401: $ref: '#/components/responses/Unauthorized' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 500: $ref: '#/components/responses/InternalServerError' post: summary: Create an appointment operationId: post_registrants_appointments tags: - Registrant Appointments requestBody: content: application/json: schema: $ref: '#/components/schemas/AppointmentCreate' security: - JwtAuthorizer: [] responses: 201: description: Appointment successfully created. content: application/json: schema: $ref: '#/components/schemas/AppointmentRead' 400: $ref: '#/components/responses/BadRequest' 401: $ref: '#/components/responses/Unauthorized' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 500: $ref: '#/components/responses/InternalServerError' /registrants/{registrantId}/appointments/{appointmentId}: parameters: - in: path name: registrantId required: true schema: type: string - in: path name: appointmentId required: true schema: type: string get: summary: Retrieve a single appointment operationId: get_registrants_appointments_by_id tags: - Registrant Appointments security: - JwtAuthorizer: [] responses: 200: description: Appointment found. content: application/json: schema: $ref: '#/components/schemas/AppointmentRead' 401: $ref: '#/components/responses/Unauthorized' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 500: $ref: '#/components/responses/InternalServerError' put: summary: Update an appointment operationId: put_registrants_appointments_by_id description: Update an appointment. This will overwrite all of the appointments data with the entity provided in the request payload. To avoid accidentally deleting appointment data, first perform a GET on the same resource, then modify the returned entity, and finally apply the entity through this PUT method. tags: - Registrant Appointments requestBody: content: application/json: schema: $ref: '#/components/schemas/AppointmentUpdate' security: - JwtAuthorizer: [] responses: 200: description: Appointment successfully updated. content: application/json: schema: $ref: '#/components/schemas/AppointmentRead' 400: $ref: '#/components/responses/BadRequest' 401: $ref: '#/components/responses/Unauthorized' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 500: $ref: '#/components/responses/InternalServerError' delete: summary: Delete an appointment operationId: delete_registrants_appointments_by_id tags: - Registrant Appointments security: - JwtAuthorizer: [] responses: 204: description: Appointment Deleted 401: $ref: '#/components/responses/Unauthorized' 403: $ref: '#/components/responses/Forbidden' 500: $ref: '#/components/responses/InternalServerError' /registrants/{registrantId}/appointments/{appointmentId}/email-confirmations: parameters: - in: path name: registrantId required: true schema: type: string - in: path name: appointmentId required: true schema: type: string post: summary: Send email confirmations for an already existing appointment operationId: post_registrants_appointments_email_confirmation tags: - Registrant Appointments requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/AppointmentEmailConfirmationRecipient' security: - JwtAuthorizer: [] responses: 200: description: Email confirmations successfully sent. 400: $ref: '#/components/responses/BadRequest' 401: $ref: '#/components/responses/Unauthorized' 403: $ref: '#/components/responses/Forbidden' 404: $ref: '#/components/responses/NotFound' 500: $ref: '#/components/responses/InternalServerError' components: schemas: StandardError: type: object title: Standard Error description: A standard error response format. properties: errorCode: type: integer example: 4xx error: type: string description: A summary of the error example: A summary of the error errorMessage: type: string description: Details of the error example: Details of the error Creator: type: object title: Creator description: 'Determines the user that created this entity based on an ordered set of Heuristics: - if creator is null or empty, then default to user: Lasso Autobot - if userId is provided, then lookup user by id, respond with 400 level error if specified user does not exist - if user first and last name are provided, then lookup user by name, otherwise default to user: Lasso Autobot ' properties: firstName: type: string example: John lastName: type: string example: Smith userId: type: string example: 123 AppointmentCreate: type: object title: Appointment Create required: - name - startTime - endTime properties: name: type: string example: Design Center Selections description: type: string example: Come on in and make it yours details: type: string example: Appointment to make selection startTime: type: string format: datetime description: When the appointment is scheduled to start. Datetimes are in ISO-8601 UTC format. example: '2019-01-31T18:30:00Z' endTime: type: string format: datetime description: When the appointment is scheduled to end. Datetimes are in ISO-8601 UTC format. example: '2019-01-31T19:30:00Z' location: type: string example: 4601 US-377, Brownwood, TX 76801, United States isPublic: type: boolean example: false status: type: string enum: - Open - Tentative - Confirmed - Cancelled - Completed - No Show sendEmailConfirmation: type: array items: $ref: '#/components/schemas/AppointmentEmailConfirmationRecipient' scheduledSmsReminders: type: array items: $ref: '#/components/schemas/AppointmentSmsReminderRecipient' createdBy: $ref: '#/components/schemas/Creator' AppointmentRead: title: Appointment Read type: object properties: name: type: string example: Design Center Selections description: type: string example: Come on in and make it yours details: type: string example: Appointment to make selection startTime: type: string format: datetime description: When the appointment is scheduled to start. Datetimes are in ISO-8601 UTC format. example: '2019-01-31T18:30:00Z' endTime: type: string format: datetime description: When the appointment is scheduled to end. Datetimes are in ISO-8601 UTC format. example: '2019-01-31T19:30:00Z' location: type: string example: 4601 US-377, Brownwood, TX 76801, United States isPublic: type: boolean example: false status: type: string enum: - Open - Tentative - Confirmed - Cancelled - Completed - No Show appointmentId: type: string example: '123' scheduledSmsReminders: type: array items: $ref: '#/components/schemas/AppointmentSmsReminderRecipient' createdBy: $ref: '#/components/schemas/Creator' _links: $ref: '#/components/schemas/AppointmentLinks' AppointmentEmailConfirmationRecipient: type: object title: Appointment Confirmation Recipient required: - email properties: firstName: type: string example: John lastName: type: string example: Smith email: type: string minLength: 1 maxLength: 50 example: test_registrant@lassocrm.com AppointmentLinks: type: object properties: self: type: string description: Link to the appointment example: /registrants/456/appointments/123 update: type: string description: Link to update the appointment example: /registrants/456/appointments/123 delete: type: string description: Link to delete the appointment example: /registrants/456/appointments/123 AppointmentSmsReminderRecipient: type: object title: AppointmentReminderRecipient properties: phone: type: string minLength: 1 maxLength: 20 example: 123-456-7890 message: type: string example: 'Del Boca Vista: your appt is Today at 9:45 am with Andrew. Call 123.456.7890 to contact us. Reply STOP to opt out' AppointmentUpdate: type: object title: Appointment Update required: - name - startTime - endTime properties: name: type: string example: Design Center Selections description: type: string example: Come on in and make it yours details: type: string example: Appointment to make selection startTime: type: string format: datetime description: When the appointment is scheduled to start. Datetimes are in ISO-8601 UTC format. example: '2019-01-31T18:30:00Z' endTime: type: string format: datetime description: When the appointment is scheduled to end. Datetimes are in ISO-8601 UTC format. example: '2019-01-31T19:30:00Z' location: type: string example: 4601 US-377, Brownwood, TX 76801, United States isPublic: type: boolean example: false status: type: string enum: - Open - Tentative - Confirmed - Cancelled - Completed - No Show scheduledSmsReminders: type: array items: $ref: '#/components/schemas/AppointmentSmsReminderRecipient' createdBy: $ref: '#/components/schemas/Creator' responses: InternalServerError: description: Receiving a 5xx response indicates an error on Lasso's end. Please contact us to report the problem BadRequest: description: 'The request could not be processed due to invalid input: - Is the request payload malformed? - Are all required fields present? - Are field values of the expected type (ie, number format, date format)? - Are field values within the expected constraints (ie, greater than max size of string)? - Are query params of the expected format? Check the body model for more documentation on field constraints and limits. ' content: application/json: schema: $ref: '#/components/schemas/StandardError' Unauthorized: description: The request has not been fulfilled because it lacks valid authentication credentials content: application/json: schema: $ref: '#/components/schemas/StandardError' NotFound: description: The specified resource was not found content: application/json: schema: $ref: '#/components/schemas/StandardError' Forbidden: description: The provided authentication credentials does not have sufficient privileges to access this resource content: application/json: schema: $ref: '#/components/schemas/StandardError' securitySchemes: JwtAuthorizer: type: http scheme: bearer bearerFormat: JWT