ECI Solutions Project Appointments API

The Project Appointments API from ECI Solutions — 1 operation(s) for project appointments.

Operations 1

GET /projects/appointments Retrieves a project's appointments #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/eci-solutions-project-appointments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

eci-solutions-project-appointments-api-openapi.yml Raw ↑
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:
  schemas:
    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
    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
    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
    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=
    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
    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
    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'
    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
    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'
    Project:
      title: Project
      type: object
      properties:
        name:
          type: string
          example: Birch Towers
        projectId:
          type: string
          example: 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
    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
  responses:
    Unauthorized:
      description: The request has not been fulfilled because it lacks valid authentication credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StandardError'
    InternalServerError:
      description: Receiving a 5xx response indicates an error on Lasso's end. Please contact us to report the problem
    Forbidden:
      description: The provided authentication credentials does not have sufficient privileges to access this resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StandardError'
  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.)'
  securitySchemes:
    JwtAuthorizer:
      type: http
      scheme: bearer
      bearerFormat: JWT