openapi: 3.2.0 info: title: Lasso Project 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: Project Appointments paths: /projects/appointments: get: summary: Retrieves a project's appointments operationId: get_project_appointments description: 'Fetches appointments for the project. Paging: Use the `next` link to page through the available appointments. Sort Order: Appointments are sorted by most recently created (largest appointmentId), with newest on top. Page Limit: 1000 appointments per page is the maximum and also the default page limit if no initial cursor is specified.' tags: - Project Appointments parameters: - $ref: '#/components/parameters/Cursor' security: - JwtAuthorizer: [] responses: 200: description: Fetches a list of appointments, sorted newest-first. content: application/json: schema: $ref: '#/components/schemas/ProjectAppointments' 401: $ref: '#/components/responses/Unauthorized' 403: $ref: '#/components/responses/Forbidden' 500: $ref: '#/components/responses/InternalServerError' components: parameters: Cursor: name: cursor in: query schema: type: string description: 'A cursor for the next batch of registrants is providing in the metadata of the body. Provide the `next` cursor as a query parameter in your next request to access the next batch of registrants. It''s a base64 encoded json object with the fields `v` for version, `o` for offset and `l` for limit. You don''t have to create the cursor object as it is embedded in the `next` link provided in the result set. Version is an integer that indicates the layout of the cursor. Future layouts may provide a different way to access parts of a result set, e.g. by providing a primary key as a reference point. This prevents the missing/repeated data issue with paged results, if the result set is modified during paging (e.g. a registrant is added while on page 2, and when loading page 3, the last registrant from page is pushed down to be the first registrant on page three and being included in two result pages. The opposite happens if a registrant is deleted, one result will be skipped.)' schemas: ProjectAppointments: type: object title: Project Appointments properties: items: type: array items: $ref: '#/components/schemas/ProjectAppointment' links: type: object properties: next: type: string description: Link to the next page of appointments example: /appointments?cursor=ewogICJ2IjogIjEuMCIsCiAgIm8iOiAiMTIzIiwKICAibCI6ICIxMDAiCn0= ProjectAppointment: title: Project Appointment 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' owner: $ref: '#/components/schemas/Creator' registrant: $ref: '#/components/schemas/AppointmentRegistrant' 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 AppointmentRegistrant: type: object title: Appointment Registrant description: This model is a subset of `RegistrantRead`, which describes a minimal set of details of an appointment registrant. Use the `GET /registrants/{registrantId}` route to get full details on this registrant. properties: registrantId: type: string example: '123' person: $ref: '#/components/schemas/RegistrantPersonalInfo' project: $ref: '#/components/schemas/Project' emails: type: array items: $ref: '#/components/schemas/EmailRead' phones: type: array items: $ref: '#/components/schemas/PhoneRead' addresses: type: array items: $ref: '#/components/schemas/AddressRead' assignedSalesReps: type: array items: $ref: '#/components/schemas/SalesRepRead' _links: $ref: '#/components/schemas/RegistrantLinks' EmailRead: type: object title: Email Read properties: emailId: type: string example: 123 email: type: string example: test_registrant@lassocrm.com type: type: string example: Personal primary: type: boolean example: true optedStatus: type: string enum: - opted_in - opted_out - non_opted example: opted_in SalesRepRead: type: object title: SalesRep Read Model description: Describes a sales rep, typically assigned to a set of registrants. properties: userId: type: string example: 123 firstName: type: string example: Lasso lastName: type: string example: Autobot isPrimary: type: boolean example: true RegistrantPersonalInfo: type: object title: Registrant Personal Info required: - firstName - lastName properties: personalId: type: string example: 1234 description: Providing a personalId when creating a new registrant will attempt to match and automatically merge the new registrant with an existing duplicate nameTitle: type: string example: Mrs firstName: type: string example: Jane lastName: type: string example: Doe company: type: string example: First Contracting contactPreference: type: string description: How the registrant would like to be contacted enum: - noPreference - any - email - mail - phone - text - noEmail - noContact example: any gender: type: string enum: - unspecified - male - female example: female nickname: type: string example: Jane birthday: type: string description: Contains only the month and day. example: 08/14 ssnSin: type: string description: The social insurance number or social security number. Please ensure that you are allowed to collect this information in your jurisdiction. example: 046 454 286 RegistrantLinks: type: object properties: self: type: string description: Link to the registrant example: /registrants/123 update: type: string description: Link to update the registrant example: /registrants/123 AddressRead: type: object title: Address Read properties: addressId: type: string example: 123 address: type: string example: 350 Fifth Avenue city: type: string example: New York country: type: string example: USA state: type: string example: NY zipCode: type: string example: '10118' type: type: string example: Mobile primary: type: boolean example: true Project: title: Project type: object properties: name: type: string example: Birch Towers projectId: type: string example: 123 PhoneRead: type: object title: Phone Read properties: phoneId: type: string example: 123 phone: type: string example: 123-456-7890 type: type: string example: Mobile primary: type: boolean example: true responses: InternalServerError: description: Receiving a 5xx response indicates an error on Lasso's end. Please contact us to report the problem Unauthorized: description: The request has not been fulfilled because it lacks valid authentication credentials 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