{
  "service": "acculynx",
  "displayName": "AccuLynx",
  "categories": [
    "Productivity",
    "Marketing"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "AccuLynx API key",
      "description": "AccuLynx API key used with the Authorization Bearer header. Create or view your key on the official AccuLynx API Keys page: https://my.acculynx.com/apikeys"
    }
  ],
  "homepageUrl": "https://acculynx.com",
  "actions": [
    {
      "id": "acculynx.create_contact",
      "service": "acculynx",
      "name": "create_contact",
      "description": "Create one new contact in AccuLynx.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactTypeIds": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "One contact type identifier.",
              "format": "uuid"
            },
            "description": "The contact type identifiers assigned to the contact.",
            "minItems": 1
          },
          "firstName": {
            "type": "string",
            "minLength": 1,
            "description": "The contact first name."
          },
          "lastName": {
            "type": "string",
            "minLength": 1,
            "description": "The contact last name."
          },
          "crossReference": {
            "type": "string",
            "minLength": 1,
            "description": "The external cross-reference stored on the contact."
          },
          "companyName": {
            "type": "string",
            "minLength": 1,
            "description": "The contact company name."
          },
          "companyJobTitle": {
            "type": "string",
            "minLength": 1,
            "description": "The contact job title."
          },
          "note": {
            "type": "string",
            "minLength": 1,
            "description": "A note stored on the contact."
          },
          "phoneNumbers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "number": {
                  "type": "string",
                  "minLength": 10,
                  "maxLength": 10,
                  "description": "The 10 digit phone number.",
                  "pattern": "^\\d{10}$"
                },
                "ext": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The optional phone extension."
                },
                "primary": {
                  "type": "boolean",
                  "description": "Whether this phone number is the primary one."
                },
                "hasTextingAvailable": {
                  "type": "boolean",
                  "description": "Whether SMS or texting is enabled for this phone number."
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "Home",
                    "Mobile",
                    "Work"
                  ],
                  "description": "The classification of the phone number."
                }
              },
              "additionalProperties": false,
              "required": [
                "number",
                "type"
              ],
              "description": "A contact phone number."
            },
            "description": "The phone numbers to create on the contact.",
            "minItems": 1
          },
          "emailAddresses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "address": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The contact email address.",
                  "format": "email"
                },
                "primary": {
                  "type": "boolean",
                  "description": "Whether this email address is the primary one."
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "Personal",
                    "Work",
                    "Other"
                  ],
                  "description": "The classification of the email address."
                }
              },
              "additionalProperties": false,
              "required": [
                "address"
              ],
              "description": "A contact email address."
            },
            "description": "The email addresses to create on the contact.",
            "minItems": 1
          },
          "mailingAddress": {
            "type": "object",
            "properties": {
              "street1": {
                "type": "string",
                "minLength": 1,
                "description": "The first address line."
              },
              "street2": {
                "type": "string",
                "minLength": 1,
                "description": "The second address line."
              },
              "city": {
                "type": "string",
                "minLength": 1,
                "description": "The city name."
              },
              "zipCode": {
                "type": "string",
                "minLength": 1,
                "description": "The postal or ZIP code."
              },
              "state": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The unique identifier of the state."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "id"
                ],
                "description": "The state reference used for a contact address."
              },
              "country": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The unique identifier of the country."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "id"
                ],
                "description": "The country reference used for a contact address."
              }
            },
            "additionalProperties": false,
            "description": "A contact address."
          },
          "billingAddress": {
            "type": "object",
            "properties": {
              "street1": {
                "type": "string",
                "minLength": 1,
                "description": "The first address line."
              },
              "street2": {
                "type": "string",
                "minLength": 1,
                "description": "The second address line."
              },
              "city": {
                "type": "string",
                "minLength": 1,
                "description": "The city name."
              },
              "zipCode": {
                "type": "string",
                "minLength": 1,
                "description": "The postal or ZIP code."
              },
              "state": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The unique identifier of the state."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "id"
                ],
                "description": "The state reference used for a contact address."
              },
              "country": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The unique identifier of the country."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "id"
                ],
                "description": "The country reference used for a contact address."
              }
            },
            "additionalProperties": false,
            "description": "A contact address."
          },
          "billingAddressSameAsMailingAddress": {
            "type": "boolean",
            "description": "Whether the billing address should match the mailing address."
          }
        },
        "additionalProperties": false,
        "required": [
          "contactTypeIds"
        ],
        "description": "The input payload for creating one AccuLynx contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The unique identifier of the created contact.",
                "format": "uuid"
              },
              "link": {
                "type": "string",
                "description": "The canonical API URL for this resource.",
                "format": "uri"
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "link"
            ],
            "description": "The created contact reference."
          }
        },
        "additionalProperties": false,
        "required": [
          "contact"
        ],
        "description": "The created contact link returned by AccuLynx."
      }
    },
    {
      "id": "acculynx.create_job",
      "service": "acculynx",
      "name": "create_job",
      "description": "Create one new job in the AccuLynx Lead milestone.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The unique identifier of the contact.",
                "format": "uuid"
              }
            },
            "additionalProperties": false,
            "required": [
              "id"
            ],
            "description": "The contact reference used by a job."
          },
          "leadSource": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The unique identifier of the lead source.",
                "format": "uuid"
              }
            },
            "additionalProperties": false,
            "required": [
              "id"
            ],
            "description": "The lead source reference used by a job."
          },
          "locationAddress": {
            "type": "object",
            "properties": {
              "street1": {
                "type": "string",
                "minLength": 1,
                "maxLength": 250,
                "description": "The first address line."
              },
              "street2": {
                "type": "string",
                "minLength": 1,
                "maxLength": 50,
                "description": "The second address line."
              },
              "city": {
                "type": "string",
                "minLength": 1,
                "maxLength": 50,
                "description": "The city name."
              },
              "state": {
                "type": "string",
                "minLength": 1,
                "maxLength": 50,
                "description": "The state or province abbreviation."
              },
              "country": {
                "type": "string",
                "minLength": 1,
                "maxLength": 50,
                "description": "The country abbreviation."
              },
              "zipCode": {
                "type": "string",
                "minLength": 1,
                "maxLength": 50,
                "description": "The postal or ZIP code."
              }
            },
            "additionalProperties": false,
            "required": [
              "street1",
              "city",
              "state",
              "country",
              "zipCode"
            ],
            "description": "The job location address."
          },
          "priority": {
            "type": "string",
            "enum": [
              "Urgent",
              "High",
              "Normal"
            ],
            "description": "The priority assigned to the job."
          },
          "jobCategory": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "The unique identifier of the job category."
              }
            },
            "additionalProperties": false,
            "required": [
              "id"
            ],
            "description": "The job category reference."
          },
          "workType": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "The unique identifier of the work type."
              }
            },
            "additionalProperties": false,
            "required": [
              "id"
            ],
            "description": "The work type reference."
          },
          "tradeTypes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The unique identifier of the trade type.",
                  "format": "uuid"
                }
              },
              "additionalProperties": false,
              "required": [
                "id"
              ],
              "description": "The trade type reference."
            },
            "description": "The trade types assigned to the job.",
            "minItems": 1
          },
          "notes": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1000,
            "description": "A note stored on the newly created job."
          }
        },
        "additionalProperties": false,
        "required": [
          "contact"
        ],
        "description": "The input payload for creating one AccuLynx job."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "job": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The unique identifier of the created job.",
                "format": "uuid"
              },
              "link": {
                "type": "string",
                "description": "The canonical API URL for this resource.",
                "format": "uri"
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "link"
            ],
            "description": "The created job reference."
          }
        },
        "additionalProperties": false,
        "required": [
          "job"
        ],
        "description": "The created job link returned by AccuLynx."
      }
    },
    {
      "id": "acculynx.get_company_settings",
      "service": "acculynx",
      "name": "get_company_settings",
      "description": "Get the current AccuLynx company settings for the connected location.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "The input payload for loading company settings."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the company.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The company name."
          },
          "hasInsurance": {
            "type": "boolean",
            "description": "Whether the company has insurance settings enabled."
          },
          "timeZoneInfo": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "The standard timezone name."
              },
              "daylightName": {
                "type": "string",
                "description": "The daylight saving timezone name."
              },
              "baseUtcOffset": {
                "type": "string",
                "description": "The base UTC offset of the timezone."
              },
              "adjustedUtcOffset": {
                "type": "string",
                "description": "The currently adjusted UTC offset of the timezone."
              },
              "supportsDaylightSavingTime": {
                "type": "boolean",
                "description": "Whether the timezone supports daylight saving time."
              }
            },
            "additionalProperties": false,
            "required": [
              "name"
            ],
            "description": "The company timezone information."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name"
        ],
        "description": "The current AccuLynx company settings."
      }
    },
    {
      "id": "acculynx.get_initial_appointment",
      "service": "acculynx",
      "name": "get_initial_appointment",
      "description": "Get the initial appointment for one AccuLynx job.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "description": "The unique identifier of the job.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "required": [
          "jobId"
        ],
        "description": "The input payload for loading one job initial appointment."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "initialAppointment": {
            "type": "object",
            "properties": {
              "link": {
                "type": "string",
                "description": "The canonical API URL for this resource.",
                "format": "uri"
              },
              "startDate": {
                "type": "string",
                "description": "The start datetime of the initial appointment.",
                "format": "date-time"
              },
              "endDate": {
                "type": "string",
                "description": "The end datetime of the initial appointment.",
                "format": "date-time"
              },
              "notes": {
                "type": "string",
                "description": "The notes stored on the initial appointment."
              }
            },
            "additionalProperties": false,
            "required": [
              "link"
            ],
            "description": "The initial appointment for one job."
          }
        },
        "additionalProperties": false,
        "required": [
          "initialAppointment"
        ],
        "description": "The initial appointment wrapper returned by the connector."
      }
    },
    {
      "id": "acculynx.list_calendar_appointments",
      "service": "acculynx",
      "name": "list_calendar_appointments",
      "description": "List appointment summaries for one AccuLynx calendar within a date range.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "calendarId": {
            "type": "string",
            "description": "The unique identifier of the calendar.",
            "format": "uuid"
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The number of items to return per page."
          },
          "pageStartIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based index of the first item to return."
          },
          "startDate": {
            "type": "string",
            "description": "The inclusive start date in YYYY-MM-DD format.",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "The inclusive end date in YYYY-MM-DD format.",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "required": [
          "calendarId",
          "startDate",
          "endDate"
        ],
        "description": "The input payload for listing calendar appointments."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "The total number of unfiltered items."
          },
          "pageSize": {
            "type": "integer",
            "description": "The requested or default page size."
          },
          "pageStartIndex": {
            "type": "integer",
            "description": "The requested or default index of the first returned item."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The unique identifier of the appointment.",
                  "format": "uuid"
                },
                "title": {
                  "type": "string",
                  "description": "The appointment title."
                },
                "start": {
                  "type": "string",
                  "description": "The appointment start datetime in ISO 8601 format.",
                  "format": "date-time"
                },
                "end": {
                  "type": "string",
                  "description": "The appointment end datetime in ISO 8601 format.",
                  "format": "date-time"
                },
                "allDay": {
                  "type": "boolean",
                  "description": "Whether the appointment lasts all day."
                },
                "jobId": {
                  "type": "string",
                  "description": "The related job identifier.",
                  "format": "uuid"
                },
                "jobName": {
                  "type": "string",
                  "description": "The related job name."
                },
                "location": {
                  "type": "string",
                  "description": "The appointment location."
                },
                "notes": {
                  "type": "string",
                  "description": "The notes attached to the appointment."
                },
                "eventType": {
                  "type": "string",
                  "description": "The appointment event type."
                },
                "link": {
                  "type": "string",
                  "description": "The canonical API URL for this resource.",
                  "format": "uri"
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "title",
                "start",
                "end",
                "allDay",
                "link"
              ],
              "description": "One calendar appointment summary."
            },
            "description": "The returned appointment summaries."
          }
        },
        "additionalProperties": false,
        "required": [
          "count",
          "pageSize",
          "pageStartIndex",
          "items"
        ],
        "description": "A paginated calendar appointment response."
      }
    },
    {
      "id": "acculynx.list_calendars",
      "service": "acculynx",
      "name": "list_calendars",
      "description": "List the calendars available in the current AccuLynx location.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The number of items to return per page."
          },
          "recordStartIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based index of the first item to return."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing calendars."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "The total number of unfiltered items."
          },
          "pageSize": {
            "type": "integer",
            "description": "The requested or default page size."
          },
          "pageStartIndex": {
            "type": "integer",
            "description": "The requested or default index of the first returned item."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The unique identifier of the calendar.",
                  "format": "uuid"
                },
                "name": {
                  "type": "string",
                  "description": "The calendar name."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name"
              ],
              "description": "One calendar returned by AccuLynx."
            },
            "description": "The returned calendars."
          }
        },
        "additionalProperties": false,
        "required": [
          "count",
          "pageSize",
          "pageStartIndex",
          "items"
        ],
        "description": "A paginated calendar response."
      }
    },
    {
      "id": "acculynx.list_contact_types",
      "service": "acculynx",
      "name": "list_contact_types",
      "description": "List the contact types configured for the current AccuLynx company.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The number of items to return per page."
          },
          "pageStartIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based index of the first item to return."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing contact types."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "The total number of unfiltered items."
          },
          "pageSize": {
            "type": "integer",
            "description": "The requested or default page size."
          },
          "pageStartIndex": {
            "type": "integer",
            "description": "The requested or default index of the first returned item."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The unique identifier of the contact type.",
                  "format": "uuid"
                },
                "name": {
                  "type": "string",
                  "description": "The contact type name."
                },
                "isDefault": {
                  "type": "boolean",
                  "description": "Whether this contact type is marked as the default."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "isDefault"
              ],
              "description": "One contact type available in the company."
            },
            "description": "The returned contact types."
          }
        },
        "additionalProperties": false,
        "required": [
          "count",
          "pageSize",
          "pageStartIndex",
          "items"
        ],
        "description": "A paginated contact type response."
      }
    },
    {
      "id": "acculynx.list_job_categories",
      "service": "acculynx",
      "name": "list_job_categories",
      "description": "List the active AccuLynx job categories configured for the company.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The number of items to return per page."
          },
          "recordStartIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based index of the first item to return."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing job categories."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "The total number of unfiltered items."
          },
          "pageSize": {
            "type": "integer",
            "description": "The requested or default page size."
          },
          "pageStartIndex": {
            "type": "integer",
            "description": "The requested or default index of the first returned item."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The unique identifier of the job category."
                },
                "name": {
                  "type": "string",
                  "description": "The job category name."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name"
              ],
              "description": "One job category available in the company."
            },
            "description": "The returned job categories."
          }
        },
        "additionalProperties": false,
        "required": [
          "count",
          "pageSize",
          "pageStartIndex",
          "items"
        ],
        "description": "A paginated job category response."
      }
    },
    {
      "id": "acculynx.list_lead_sources",
      "service": "acculynx",
      "name": "list_lead_sources",
      "description": "List the active lead sources configured for the current AccuLynx company.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The number of items to return per page."
          },
          "recordStartIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based index of the first item to return."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing lead sources."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "The total number of unfiltered items."
          },
          "pageSize": {
            "type": "integer",
            "description": "The requested or default page size."
          },
          "pageStartIndex": {
            "type": "integer",
            "description": "The requested or default index of the first returned item."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The unique identifier of the lead source.",
                  "format": "uuid"
                },
                "name": {
                  "type": "string",
                  "description": "The lead source name."
                },
                "link": {
                  "type": "string",
                  "description": "The canonical API URL for this resource.",
                  "format": "uri"
                },
                "children": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "The unique identifier of the child lead source.",
                        "format": "uuid"
                      },
                      "parentId": {
                        "type": "string",
                        "description": "The unique identifier of the parent lead source.",
                        "format": "uuid"
                      },
                      "name": {
                        "type": "string",
                        "description": "The child lead source name."
                      },
                      "link": {
                        "type": "string",
                        "description": "The canonical API URL for this resource.",
                        "format": "uri"
                      }
                    },
                    "additionalProperties": false,
                    "required": [
                      "id",
                      "parentId",
                      "name",
                      "link"
                    ],
                    "description": "One child lead source."
                  },
                  "description": "The child lead sources when configured."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "link"
              ],
              "description": "One lead source available in the company."
            },
            "description": "The returned lead sources."
          }
        },
        "additionalProperties": false,
        "required": [
          "count",
          "pageSize",
          "pageStartIndex",
          "items"
        ],
        "description": "A paginated lead source response."
      }
    },
    {
      "id": "acculynx.list_trade_types",
      "service": "acculynx",
      "name": "list_trade_types",
      "description": "List the active AccuLynx trade types configured for the company.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The number of items to return per page."
          },
          "recordStartIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based index of the first item to return."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing trade types."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "The total number of unfiltered items."
          },
          "pageSize": {
            "type": "integer",
            "description": "The requested or default page size."
          },
          "pageStartIndex": {
            "type": "integer",
            "description": "The requested or default index of the first returned item."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The unique identifier of the trade type.",
                  "format": "uuid"
                },
                "name": {
                  "type": "string",
                  "description": "The trade type name."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name"
              ],
              "description": "One trade type available in the company."
            },
            "description": "The returned trade types."
          }
        },
        "additionalProperties": false,
        "required": [
          "count",
          "pageSize",
          "pageStartIndex",
          "items"
        ],
        "description": "A paginated trade type response."
      }
    },
    {
      "id": "acculynx.list_work_types",
      "service": "acculynx",
      "name": "list_work_types",
      "description": "List the active AccuLynx work types configured for the company.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "description": "The number of items to return per page."
          },
          "recordStartIndex": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based index of the first item to return."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing work types."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "The total number of unfiltered items."
          },
          "pageSize": {
            "type": "integer",
            "description": "The requested or default page size."
          },
          "pageStartIndex": {
            "type": "integer",
            "description": "The requested or default index of the first returned item."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The unique identifier of the work type."
                },
                "name": {
                  "type": "string",
                  "description": "The work type name."
                },
                "systemDefault": {
                  "type": "boolean",
                  "description": "Whether the work type is a system default."
                },
                "link": {
                  "type": "string",
                  "description": "The canonical API URL for this resource.",
                  "format": "uri"
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name",
                "systemDefault",
                "link"
              ],
              "description": "One work type available in the company."
            },
            "description": "The returned work types."
          }
        },
        "additionalProperties": false,
        "required": [
          "count",
          "pageSize",
          "pageStartIndex",
          "items"
        ],
        "description": "A paginated work type response."
      }
    },
    {
      "id": "acculynx.upsert_initial_appointment",
      "service": "acculynx",
      "name": "upsert_initial_appointment",
      "description": "Add or update the initial appointment for one AccuLynx job.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "description": "The unique identifier of the job.",
            "format": "uuid"
          },
          "startDate": {
            "type": "string",
            "description": "The appointment start datetime in UTC ISO 8601 format.",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "The appointment end datetime in UTC ISO 8601 format.",
            "format": "date-time"
          },
          "notes": {
            "type": "string",
            "description": "The notes stored on the initial appointment."
          }
        },
        "additionalProperties": false,
        "required": [
          "jobId",
          "startDate"
        ],
        "description": "The input payload for adding or updating one job initial appointment."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "initialAppointment": {
            "type": "object",
            "properties": {
              "link": {
                "type": "string",
                "description": "The canonical API URL for this resource.",
                "format": "uri"
              },
              "startDate": {
                "type": "string",
                "description": "The start datetime of the initial appointment.",
                "format": "date-time"
              },
              "endDate": {
                "type": "string",
                "description": "The end datetime of the initial appointment.",
                "format": "date-time"
              },
              "notes": {
                "type": "string",
                "description": "The notes stored on the initial appointment."
              }
            },
            "additionalProperties": false,
            "required": [
              "link"
            ],
            "description": "The initial appointment for one job."
          }
        },
        "additionalProperties": false,
        "required": [
          "initialAppointment"
        ],
        "description": "The initial appointment wrapper returned by the connector."
      }
    }
  ]
}
