### Continue Installation Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Install Autotask AI skills for Continue by running the install script. This adds context provider configuration to your Continue config. ```bash bash install.sh --tool continue ``` -------------------------------- ### GitHub Copilot Installation Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Install Autotask AI skills for GitHub Copilot by running the install script. This creates .github/copilot-instructions.md with skill knowledge. ```bash bash install.sh --tool copilot ``` -------------------------------- ### Install All Supported Autotask AI Skills Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Clone the repository and run the install script to set up all supported Autotask AI Skills. ```bash bash install.sh --all ``` -------------------------------- ### Aider Installation Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Install Autotask AI skills for Aider by running the install script. This creates .aider.conf.yml and a conventions file. ```bash bash install.sh --tool aider ``` -------------------------------- ### SKILL.md Frontmatter Example Source: https://github.com/adit7494/autotask-ai-skills/blob/master/CONTRIBUTING.md Example of the required YAML frontmatter and basic structure for a new skill's SKILL.md file. ```markdown --- name: your-skill-name description: One-line description of when to use this skill --- # Skill Title ## Overview What this skill covers. ## Sections Detailed content with API examples. ``` -------------------------------- ### Install Autotask AI Skills for Windsurf Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Clone the repository and run the install script to set up Autotask AI Skills for Windsurf. ```bash bash install.sh --tool windsurf ``` -------------------------------- ### Install Autotask AI Skills with Claude Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Clone the repository and run the install script to set up Autotask AI Skills for Claude. ```bash git clone https://github.com/adit7494/autotask-ai-skills.git cd autotask-ai-skills bash install.sh --tool claude ``` -------------------------------- ### Install Autotask AI Skills for Cursor Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Clone the repository and run the install script to set up Autotask AI Skills for Cursor. ```bash bash install.sh --tool cursor ``` -------------------------------- ### Manual Claude Code Installation Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Manually copy the skills to the Claude Code skill directory if automated installation is not preferred. ```bash # Copy skills to Claude Code's skill directory cp -r skills/* ~/.claude/skills/ ``` -------------------------------- ### Autotask AI Skills Project Structure Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Overview of the Autotask AI Skills project directory structure, including skills, adapters, installation scripts, and example usage. ```tree autotask-ai-skills/ ├── skills/ # Claude Code native format │ ├── autotask-psa-api/ # Foundation - all others depend on this │ ├── autotask-contract-management/ │ ├── autotask-data-warehouse/ │ ├── autotask-execute-command/ │ ├── autotask-inventory/ │ ├── autotask-kpi-reporting/ │ ├── autotask-udf/ │ └── autotask-webhooks/ ├── adapters/ # Converted formats for other AI tools │ ├── cursor/.cursorrules │ ├── windsurf/.windsurfrules │ ├── continue/config.yaml │ ├── aider/.aider.conf.yml │ └── copilot/copilot-instructions.md ├── install.sh # Unix/macOS installer ├── install.ps1 # Windows installer └── examples/ # Usage examples ``` -------------------------------- ### Example AI Assistant Prompts Source: https://github.com/adit7494/autotask-ai-skills/blob/master/examples/kpi-dashboard.md A list of example natural language prompts for an AI assistant to generate reports and insights from Autotask data. ```text "Build a ticket SLA compliance dashboard for this month" "Show me resource utilization - billable vs non-billable hours per engineer" "Calculate our monthly recurring revenue from active recurring service contracts" "What's our sales pipeline weighted value by close date?" "Which resources have the most time off planned this quarter?" "Show me ticket aging - how long have open tickets been sitting?" ``` -------------------------------- ### Install Autotask AI Skills on Windows (PowerShell) Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Clone the repository and use the PowerShell script to install Autotask AI Skills for a specific tool or all tools. ```powershell git clone https://github.com/adit7494/autotask-ai-skills.git cd autotask-ai-skills .\install.ps1 -Tool claude # or .\install.ps1 -All ``` -------------------------------- ### Autotask Zone Information Response Example Source: https://github.com/adit7494/autotask-ai-skills/blob/master/adapters/aider/AUTOTASK_CONVENTIONS.md Example JSON response for zone discovery, providing the 'url' to be used as the base for all subsequent API requests. ```json { "url": "https://webservices15.autotask.net/atservicesrest" } ``` -------------------------------- ### JSON API Examples Source: https://github.com/adit7494/autotask-ai-skills/blob/master/CLAUDE.md Keep API examples as JSON code blocks. This is a guideline for documenting entity field values and enums. ```json {} ``` -------------------------------- ### Pagination Response Example Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-psa-api/SKILL.md Example of a paginated response from the API, including item data and pagination details. Follow 'nextPageUrl' to retrieve subsequent pages. ```json { "items": [...], "pageDetails": { "count": 500, "requestCount": 500, "prevPageUrl": null, "nextPageUrl": "https://.../query/next?paging=..." } } ``` -------------------------------- ### Autotask API Base URL Examples Source: https://github.com/adit7494/autotask-ai-skills/blob/master/adapters/aider/AUTOTASK_CONVENTIONS.md Examples of constructing full API URLs for different entities like Tickets and Companies using the base URL pattern. ```text https://webservices15.autotask.net/atservicesrest/v1.0/Tickets https://webservices15.autotask.net/atservicesrest/v1.0/Companies ``` -------------------------------- ### Querying Protected UDFs Filter Example Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-udf/SKILL.md Shows an example filter structure for querying protected UDFs, emphasizing case-sensitivity and permission requirements. ```json { "filter": [ { "op": "eq", "field": "SSN", "udf": true, "value": "123-45-6789" } ] } ``` -------------------------------- ### Project-Level Claude Code Installation Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Install skills at the project level by copying them to a specific directory within your project for Claude Code. ```bash # Copy to your project's .claude/skills/ directory mkdir -p /path/to/your/project/.claude/skills/ cp -r skills/* /path/to/your/project/.claude/skills/ ``` -------------------------------- ### Query Revenue by Contract Source: https://github.com/adit7494/autotask-ai-skills/blob/master/examples/kpi-dashboard.md Get billing items for a contract starting from a specific date, including contract ID, price, type, and posting date. Useful for tracking revenue sources. ```json POST /BillingItems/query { "IncludeFields": ["contractID", "extendedPrice", "billingItemType", "postedDate"], "filter": [ {"op": "gte", "field": "postedDate", "value": "2026-06-01T00:00:00.000"} ] } ``` -------------------------------- ### UDF Response Format Example Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-udf/SKILL.md Shows how User Defined Fields are represented in API responses within the 'userDefinedFields' array. ```json { "items": [ { "id": 12345, "companyName": "ACME Corp", "userDefinedFields": [ {"name": "CustomerRanking", "value": "Golden"}, {"name": "AccountManager", "value": "John Smith"}, {"name": "ContractRenewalDate", "value": "2024-06-01"}, {"name": "CustomCheckbox", "value": "true"} ] } ] } ``` -------------------------------- ### UDF with IncludeFields Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-udf/SKILL.md Use this example to query for the existence of a User-Defined Field (UDF) and include specific fields in the response. This is useful for checking if a UDF is populated. ```json { "IncludeFields": ["id", "companyName", "CustomerRanking"], "filter": [ { "op": "exist", "field": "CustomerRanking", "udf": true } ] } ``` -------------------------------- ### Get Stock Summary by Location Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-inventory/SKILL.md Obtain the stock summary for a specific inventory location, showing quantities on hand for each product. ```json GET /InventoryStockedItems/query { "IncludeFields": ["inventoryLocationID", "productID", "quantityOnHand"], "filter": [ {"op": "eq", "field": "inventoryLocationID", "value": 100} ] } ``` -------------------------------- ### Autotask PSA API Field Selection Example Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-psa-api/SKILL.md Demonstrates how to specify which fields to include in the query response using the 'IncludeFields' parameter. ```JSON { "IncludeFields": ["Id", "companyName", "phone"], "filter": [...] } ``` -------------------------------- ### Autotask PSA API Basic Filter Example Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-psa-api/SKILL.md Demonstrates a basic filter for querying entities, specifying equality for a particular field. ```URL Query String ?search={"filter":[{"op":"eq","field":"CompanyName","value":"ACME Corp"}]} ``` -------------------------------- ### Full cURL Example for Querying Autotask Tickets Source: https://github.com/adit7494/autotask-ai-skills/blob/master/examples/query-tickets.md This cURL command demonstrates the complete process of discovering your Autotask zone and then querying tickets with specific filters. Ensure you replace placeholder values with your actual credentials and integration code. ```bash # Step 1: Discover zone curl -s "https://webservices3.autotask.net/atservicesrest/v1.0/ZoneInformation?user=api@company.com" # Step 2: Query tickets curl -X POST "https://webservices3.autotask.net/atservicesrest/v1.0/Tickets/query" \ -H "Username: api@company.com" \ -H "Secret: your-password" \ -H "APIIntegrationcode: your-integration-code" \ -H "Content-Type: application/json" \ -d '{ "IncludeFields": ["id", "ticketNumber", "title", "status", "priority"], "filter": [ {"op": "noteq", "field": "status", "value": 5}, {"op": "eq", "field": "priority", "value": 1} ] }' ``` -------------------------------- ### Store External System IDs in UDFs Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-udf/SKILL.md Example of using UDFs to store unique identifiers from external systems like Salesforce or Jira. ```json { "userDefinedFields": [ {"name": "SalesforceID", "value": "001xx000003DGP0"}, {"name": "JiraProjectKey", "value": "PROJ-123"}, {"name": "ExternalSyncStatus", "value": "Synced"} ] } ``` -------------------------------- ### Custom Workflow Flags using UDFs Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-udf/SKILL.md Example of using UDFs to manage custom workflow states like approval status and assigned approvers. ```json { "userDefinedFields": [ {"name": "RequiresApproval", "value": "true"}, {"name": "ApprovalStatus", "value": "Pending"}, {"name": "ApprovedBy", "value": null} ] } ``` -------------------------------- ### Calculate Contract Revenue Forecast (Recurring Services) Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-contract-management/SKILL.md Example calculation for forecasting revenue from recurring services. This involves summing the unit price multiplied by the quantity for each month. ```javascript // For recurring services: SUM(unitPrice * quantity) per month // For block hours: block price when purchased // For retainers: retainer amount // For fixed price: milestone amounts by due date ``` -------------------------------- ### Autotask Data Warehouse Connection String Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-data-warehouse/SKILL.md Use this example connection string to connect to the Autotask Data Warehouse from BI tools. Ensure you replace placeholder values with your specific credentials and zone URL. ```sql Server=your-zone-url.autotask.net,1433;Database=AutotaskDW;User Id=your-user;Password=your-pass;Encrypt=true; ``` -------------------------------- ### Calculate Service Delivery Margin Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-contract-management/SKILL.md Example calculation for determining the profit margin on a service. This involves comparing revenue generated from the service against its associated costs. ```javascript // Revenue: ContractServices.unitPrice * quantity // Cost: ContractRoleCosts.cost * hours logged // Margin: (Revenue - Cost) / Revenue * 100 ``` -------------------------------- ### AI Prompts for Autotask Ticket Queries Source: https://github.com/adit7494/autotask-ai-skills/blob/master/examples/query-tickets.md Examples of natural language prompts that can be used to query Autotask tickets via an AI assistant. These prompts cover various scenarios like summarizing tickets, finding tickets by date, and filtering by assignee or UDF. ```text "Query all open high-priority tickets from Autotask and summarize them by queue" "Show me tickets created this week that are waiting on the customer" "Find all tickets assigned to John Smith that are past their due date" "List tickets with the UDF 'CustomerPriority' set to 'Critical'" ``` -------------------------------- ### Open KB Article Command Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-execute-command/SKILL.md Use the `OpenKBArticle` command to open a knowledge base article. Provide the Knowledgebase article ID as the parameter. ```URL https://ww[number].autotask.net/ExecuteCommand?Command=OpenKBArticle&Parameters={Knowledgebase article ID} ``` -------------------------------- ### Compare Project Budget vs. Actuals Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-data-warehouse/SKILL.md Compares estimated and actual hours, budget and actual costs, and calculates variances and percentage completion for 'In Progress' projects. ```sql -- Project budget vs actual SELECT project_name, estimated_hours, actual_hours, budget_amount, actual_cost, (actual_hours - estimated_hours) as hours_variance, (actual_cost - budget_amount) as cost_variance, CASE WHEN estimated_hours > 0 THEN (actual_hours / estimated_hours) * 100 ELSE NULL END as hours_pct FROM v_project WHERE status_name = 'In Progress' ORDER BY cost_variance DESC ``` -------------------------------- ### Open Asset Command Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-execute-command/SKILL.md Use the `EditInstalledProduct` command to edit an existing asset. Provide the Asset ID as the parameter. ```URL https://ww[number].autotask.net/ExecuteCommand?Command=EditInstalledProduct&Parameters={Asset ID} ``` -------------------------------- ### Example Autotask Ticket Creation Webhook Payload Source: https://github.com/adit7494/autotask-ai-skills/blob/master/examples/create-webhook.md This is an example of the JSON payload Autotask sends when a ticket is created. It includes entity details, event type, timestamp, and field values. ```json { "entityId": 12345, "entityType": "Ticket", "eventType": "Create", "timestamp": "2026-06-15T14:30:00.000Z", "fields": { "id": 12345, "ticketNumber": "T20260615.0001", "title": "Server is down", "status": 1, "priority": 1, "companyID": 67890, "assignedResourceID": 111, "createDate": "2026-06-15T14:30:00.000Z" }, "userDefinedFields": [ { "name": "CustomerPriority", "value": "Critical" } ] } ``` -------------------------------- ### Open Appointment Command Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-execute-command/SKILL.md Use the `OpenAppointment` command to open a specific appointment. Provide the AppointmentID as the parameter. ```URL https://ww[number].autotask.net/ExecuteCommand?Command=OpenAppointment&Parameters={AppointmentID} ``` -------------------------------- ### Set Up Webhooks with Autotask Webhooks Skill Source: https://github.com/adit7494/autotask-ai-skills/blob/master/README.md Use the autotask-webhooks skill to set up a webhook for new ticket creation. This includes creating an API-only user, configuring the webhook, and setting up an endpoint to receive payloads. ```text Ask your AI: "Help me set up a webhook for new ticket creation" The AI will use the autotask-webhooks skill to: 1. Create an API-only user with webhook permissions 2. Configure the webhook via POST /TicketsWebhooks 3. Set up your endpoint to receive payloads ``` -------------------------------- ### Get Serial Numbers for Item Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-inventory/SKILL.md Retrieves serial numbers associated with a specific inventory item. ```APIDOC ## GET /InventoryItemSerialNumbers/query ### Description Retrieves serial numbers for a given inventory item. ### Method GET ### Endpoint /InventoryItemSerialNumbers/query ### Query Parameters - **IncludeFields** (array) - Optional - Fields to include in the response, e.g., ["inventoryItemID", "serialNumber", "status"] ### Request Body - **filter** (array) - Required - Filter criteria for the query. - **op** (string) - Required - Operation type, e.g., "eq" - **field** (string) - Required - Field to filter on, e.g., "inventoryItemID" - **value** (number) - Required - Value to filter by, e.g., 12345 ### Request Example ```json { "IncludeFields": ["inventoryItemID", "serialNumber", "status"], "filter": [ {"op": "eq", "field": "inventoryItemID", "value": 12345} ] } ``` ### Response #### Success Response (200) - **inventoryItemID** (number) - The ID of the inventory item. - **serialNumber** (string) - The serial number of the item. - **status** (string) - The status of the serial number. ``` -------------------------------- ### Open Account Command Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-execute-command/SKILL.md Use the `OpenAccount` command to open an existing account. You can identify the account by its Phone number, AccountName, or Account ID. ```URL https://ww[number].autotask.net/ExecuteCommand?Command=OpenAccount&Parameters={Phone, AccountName, or Account ID} ``` -------------------------------- ### Retrieve Contract Service Bundles Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-contract-management/SKILL.md Get information about service bundles linked to a specific contract ID. ```json GET /ContractServiceBundles/query { "IncludeFields": ["contractID", "serviceBundleID", "unitPrice", "quantity", "billingStartDate"], "filter": [ {"op": "eq", "field": "contractID", "value": 12345} ] } ``` -------------------------------- ### Get Serial Numbers for an Item Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-inventory/SKILL.md Retrieve serial numbers associated with a specific inventory item. Requires the inventoryItemID. ```json GET /InventoryItemSerialNumbers/query { "IncludeFields": ["inventoryItemID", "serialNumber", "status"], "filter": [ {"op": "eq", "field": "inventoryItemID", "value": 12345} ] } ``` -------------------------------- ### Open ToDo Item Command Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-execute-command/SKILL.md Use the `OpenToDo` command to open a specific To-Do item. Provide the ToDoID as the parameter. ```URL https://ww[number].autotask.net/ExecuteCommand?Command=OpenToDo&Parameters={ToDoID} ``` -------------------------------- ### Query Project Status Summary Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-kpi-reporting/SKILL.md Retrieve project details including ID, name, status, dates, hours, and revenue/cost information. Use 'entityInformation/fields' for status picklist values. Date fields are 'startDateTime'/'endDateTime'. ```json // GET /Projects/query { "IncludeFields": ["id", "projectName", "status", "startDateTime", "endDateTime", "actualHours", "estimatedHours", "laborEstimatedRevenue", "laborEstimatedCosts", "laborEstimatedMarginPercentage", "completedPercentage"], "filter": [ {"op": "exist", "field": "status"} ] } ``` -------------------------------- ### Create Ticket with UDFs Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-udf/SKILL.md Illustrates how to include User Defined Fields when creating a new ticket via a POST request. ```json POST /Tickets { "companyID": 11111, "title": "New Ticket", "userDefinedFields": [ {"name": "Source", "value": "Integration"}, {"name": "Priority", "value": "High"} ] } ``` -------------------------------- ### Filter for Contract Expiration Alerts Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-contract-management/SKILL.md Example filter to identify contracts expiring within a specific date range. This is useful for setting up expiration alerts. ```json { "filter": [ {"op": "eq", "field": "status", "value": 1}, {"op": "lte", "field": "endDate", "value": "2024-02-01"}, {"op": "gte", "field": "endDate", "value": "2024-01-01"} ] } ``` -------------------------------- ### Track Integration Metadata with UDFs Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-udf/SKILL.md Demonstrates using UDFs to store metadata related to integration processes, such as sync dates and batch IDs. ```json { "userDefinedFields": [ {"name": "LastSyncDate", "value": "2024-01-15T10:30:00"}, {"name": "SyncSource", "value": "Salesforce"}, {"name": "ImportBatchID", "value": "BATCH-2024-01-15-001"} ] } ``` -------------------------------- ### Add Stock Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-inventory/SKILL.md Adds stock to an existing inventory product. ```APIDOC ## POST /InventoryStockedItemsAdd ### Description Adds a specified quantity of stock to an inventory product, with options for cost and pricing determination. ### Method POST ### Endpoint /InventoryStockedItemsAdd ### Parameters #### Request Body - **inventoryProductID** (integer) - Required - The ID of the product to add stock to. - **vendorID** (integer) - Required - The ID of the vendor supplying the stock. - **quantityBeingAdded** (integer) - Required - The quantity of stock to add. Must be 1 for serialized products, non-zero for non-serialized. - **determineCostUsing** (integer) - Required - Method for determining the cost: 1=AverageCost, 2=LastReceivedCost, 3=CatalogCost, 4=ManualEntry. - **determineNewPriceUsing** (integer) - Required - Method for determining the new price: 1=CostOfItems, 2=PercentageOfCost, 3=CatalogPrice, 4=PercentageOfCatalog, 5=ManualEntry. - **serialNumber** (string) - Optional - Required for serialized products. - **unitCost** (number) - Optional - Required if `determineCostUsing` is 4 (ManualEntry). - **returnPrice** (number) - Optional - Required if `determineNewPriceUsing` is 5 (ManualEntry). - **pricePercentage** (number) - Optional - Required if `determineNewPriceUsing` is 2 or 4. - **vendorInvoiceNumber** (string) - Optional - Required if system setting is enabled. ### Request Example ```json { "inventoryProductID": 12345, "vendorID": 67890, "quantityBeingAdded": 10, "determineCostUsing": 3, "determineNewPriceUsing": 3, "reasonForUpdate": "Manual stock addition" } ``` ### Response #### Success Response (200) This endpoint typically returns a success status upon successful execution. Specific response body details may vary. #### Response Example ```json { "success": true, "message": "Stock added successfully." } ``` ``` -------------------------------- ### Get All UDF Definitions for Entity Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-udf/SKILL.md Retrieves a list of all User Defined Field (UDF) definitions for a specified entity. Supports filtering by entity name. ```APIDOC ## GET /UserDefinedFieldDefinitions/query ### Description Retrieves a list of UDF definitions, allowing filtering by entity. ### Method GET ### Endpoint /UserDefinedFieldDefinitions/query ### Parameters #### Query Parameters - **filter** (array) - Required - An array of filter objects to narrow down the results. Example: `[{"op": "eq", "field": "parentObjectName", "value": "Ticket"}]` ### Request Example ```json GET /UserDefinedFieldDefinitions/query { "filter": [ {"op": "eq", "field": "parentObjectName", "value": "Ticket"} ] } ``` ### Response #### Success Response (200) - **id** (long) - Read-only - **name** (string(45)) - Must be unique - **udfType** (integer) - Picklist, cannot change after creation - **dataType** (integer) - Picklist, cannot change after creation - **description** (string(128)) - **defaultValue** (string(1024)) - Must match dataType - **isActive** (boolean) - **isRequired** (boolean) - Cannot set True for Ticket/Task UDFs - **isProtected** (boolean) - Default: false - **isEncrypted** (boolean) - Default: false, cannot query encrypted data - **isPrivate** (boolean) - Only for protected Asset UDFs of String type - **isVisibleToClientPortal** (boolean) - Only for Asset/Ticket UDFs - **displayFormat** (integer) - Picklist, only for String dataType - **sortOrder** (integer) - Must be > 0, defaults to 1 - **numberOfDecimalPlaces** (integer) - 1-4, defaults to 2 - **mergeVariableName** (string(100)) - Must start with "var", must be unique - **isFieldMapping** (boolean) - Read-only, restricts updates - **createDate** (datetime) - **crmToProjectUdfId** (long) - Link to Opportunity UDF ``` -------------------------------- ### Open Ticket Detail Command Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-execute-command/SKILL.md Use the `OpenTicketDetail` command to open a specific ticket's detail view. Provide the Ticket Number or Ticket ID as a parameter. ```URL https://ww[number].autotask.net/ExecuteCommand?Command=OpenTicketDetail&Parameters={Ticket Number or Ticket ID} ``` -------------------------------- ### Get All UDF Definitions for an Entity Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-udf/SKILL.md Retrieve all User Defined Field definitions for a specified entity, such as 'Ticket'. This is useful for understanding the available fields and their properties. ```json GET /UserDefinedFieldDefinitions/query { "filter": [ {"op": "eq", "field": "parentObjectName", "value": "Ticket"} ] } ``` -------------------------------- ### Filtering with User-Defined Fields Source: https://github.com/adit7494/autotask-ai-skills/blob/master/adapters/copilot/copilot-instructions.md When filtering on user-defined fields, prepend 'UDF' to the field name and remove spaces. For example, 'My Custom Field' becomes 'UDFMyCustomField'. ```json { "field": "UDF{FieldNameNoSpaces}", "op": "eq", "value": "x" } ``` -------------------------------- ### Open Service Call Command Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-execute-command/SKILL.md Use the `OpenServiceCall` command to open a specific service call. Provide the Service Call ID as the parameter. ```URL https://ww[number].autotask.net/ExecuteCommand?Command=OpenServiceCall&Parameters={Service Call ID} ``` -------------------------------- ### Query Resource Daily Availabilities Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-kpi-reporting/SKILL.md Fetch daily availability data for resources within a specified date range. This entity is newer, and available fields can be discovered using entityInformation/fields. ```json // GET /ResourceDailyAvailabilities/query { "filter": [ {"op": "gte", "field": "date", "value": "2024-01-01"}, {"op": "lte", "field": "date", "value": "2024-01-31"} ] } ``` -------------------------------- ### Get List UDF Values Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-udf/SKILL.md Retrieves a list of values associated with a specific User Defined Field (UDF). Supports filtering by UDF field ID. ```APIDOC ## GET /UserDefinedFieldListItems/query ### Description Retrieves a list of values for a specific UDF, allowing filtering by the UDF's field ID. ### Method GET ### Endpoint /UserDefinedFieldListItems/query ### Parameters #### Query Parameters - **IncludeFields** (array) - Optional - Specifies which fields to include in the response. Example: `["id", "udfFieldId", "valueForDisplay", "valueForExport", "isActive"]` - **filter** (array) - Required - An array of filter objects to narrow down the results. Example: `[{"op": "eq", "field": "udfFieldId", "value": 123}]` ### Request Example ```json GET /UserDefinedFieldListItems/query { "IncludeFields": ["id", "udfFieldId", "valueForDisplay", "valueForExport", "isActive"], "filter": [ {"op": "eq", "field": "udfFieldId", "value": 123} ] } ``` ### Response #### Success Response (200) - **id** (long) - Read-only - **udfFieldId** (long) - References UserDefinedFieldDefinitions - **valueForDisplay** (string(128)) - Must be unique within UDF - **valueForExport** (string(128)) - Must be unique within UDF - **isActive** (boolean) - Defaults to true on create - **createDate** (datetime) - Read-only ``` -------------------------------- ### Filtering on User-Defined Fields Source: https://github.com/adit7494/autotask-ai-skills/blob/master/adapters/aider/AUTOTASK_CONVENTIONS.md To filter on a user-defined field (UDF), use the format 'UDF{FieldName}'. This example shows how to filter for a UDF named 'MyCustomField' with the value 'abc'. ```JSON { "field": "UDFMyCustomField", "op": "eq", "value": "abc" } ``` -------------------------------- ### Open Project Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-execute-command/SKILL.md Opens a specific project in Autotask using its ID. This provides direct access to project details and associated information. ```url https://ww3.autotask.net/ExecuteCommand?Command=OpenProject&Parameters=54321 ``` -------------------------------- ### Query Inventory Stocked Items Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-inventory/SKILL.md Get detailed on-hand inventory information for stocked items, including unit cost and status. This is useful for tracking specific item details and costs. ```json GET /InventoryStockedItems/query { "IncludeFields": ["inventoryProductID", "onHandUnits", "availableUnits", "reservedUnits", "pickedUnits", "deliveredUnits", "transferredUnits", "removedUnits", "unitCost", "serialNumber", "statusID"], "filter": [ {"op": "exist", "field": "inventoryProductID"} ] } ``` -------------------------------- ### Query Inventory Products Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-inventory/SKILL.md Retrieve associations between products and inventory locations, including various stock level metrics. Use this to get a general overview of product stock across locations. ```json GET /InventoryProducts/query { "IncludeFields": ["productID", "inventoryLocationID", "onHandUnits", "availableUnits", "reservedUnits", "pickedUnits", "unitsOnOrder", "quantityMinimum", "quantityMaximum", "bin", "referenceNumber"], "filter": [ {"op": "exist", "field": "productID"} ] } ``` -------------------------------- ### Products Source: https://github.com/adit7494/autotask-ai-skills/blob/master/adapters/copilot/copilot-instructions.md Represents products available in the Autotask system. ```APIDOC ## GET /v1.0/Products ### Description Retrieves a list of products. ### Endpoint /v1.0/Products ### Parameters #### Query Parameters - **id** (Long) - Optional - Filter by product ID. ### Response #### Success Response (200) - **id** (Long) - Primary key - **productName** (String) - **description** (String) - **manufacturerID** (Long) - **isActive** (Bool) ``` -------------------------------- ### Get List UDF Values for a Field Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-udf/SKILL.md Retrieve the list item values for a specific User Defined Field, identified by its ID. This is useful for understanding the selectable options for picklist-type UDFs. ```json GET /UserDefinedFieldListItems/query { "IncludeFields": ["id", "udfFieldId", "valueForDisplay", "valueForExport", "isActive"], "filter": [ {"op": "eq", "field": "udfFieldId", "value": 123} ] } ``` -------------------------------- ### Query Tickets by User-Defined Field (UDF) Source: https://github.com/adit7494/autotask-ai-skills/blob/master/examples/query-tickets.md Filter tickets based on a user-defined field by setting 'udf': true in the filter object. This example queries for tickets where the 'CustomerPriority' UDF is set to 'Critical'. ```json { "filter": [ {"op": "eq", "field": "CustomerPriority", "udf": true, "value": "Critical"} ] } ``` -------------------------------- ### Discover Autotask PSA Zone Information Source: https://github.com/adit7494/autotask-ai-skills/blob/master/adapters/copilot/copilot-instructions.md Use this GET request to discover the correct zone URL for your Autotask PSA instance. The response contains the URL needed for all subsequent API calls. ```http GET https://webservices.autotask.net/atservicesrest/v1.0/zoneInformation?user={email} ``` -------------------------------- ### Inventory Products (Product-Location Associations) Source: https://github.com/adit7494/autotask-ai-skills/blob/master/skills/autotask-inventory/SKILL.md Retrieves a list of inventory products and their associations with specific locations, including stock levels and quantity thresholds. ```APIDOC ## GET /InventoryProducts/query ### Description Retrieves inventory products and their associations with locations, including on-hand, available, reserved, picked, and on-order units, along with minimum and maximum stock quantities and bin information. ### Method GET ### Endpoint /InventoryProducts/query ### Parameters #### Query Parameters - **IncludeFields** (array) - Optional - Specifies which fields to include in the response. Example: ["productID", "inventoryLocationID", "onHandUnits", "availableUnits", "reservedUnits", "pickedUnits", "unitsOnOrder", "quantityMinimum", "quantityMaximum", "bin", "referenceNumber"] - **filter** (array) - Optional - Criteria to filter the results. Example: [{"op": "exist", "field": "productID"}] ### Request Example ```json { "IncludeFields": ["productID", "inventoryLocationID", "onHandUnits", "availableUnits", "reservedUnits", "pickedUnits", "unitsOnOrder", "quantityMinimum", "quantityMaximum", "bin", "referenceNumber"], "filter": [ {"op": "exist", "field": "productID"} ] } ``` ### Response #### Success Response (200) - **productID** (string) - The unique identifier for the product. - **inventoryLocationID** (string) - The unique identifier for the inventory location. - **onHandUnits** (number) - Read-only, calculated from stocked items. - **availableUnits** (number) - Read-only. - **reservedUnits** (number) - Read-only. - **pickedUnits** (number) - Read-only. - **unitsOnOrder** (number) - Read-only. - **quantityMinimum** (number) - Required, must be >= 0. - **quantityMaximum** (number) - Required, must be >= quantityMinimum. - **bin** (string) - The bin location for the product. - **referenceNumber** (string) - A reference number associated with the product. ### Key Fields - `onHandUnits` - Read-only, calculated from stocked items - `availableUnits` - Read-only - `reservedUnits` - Read-only - `pickedUnits` - Read-only - `unitsOnOrder` - Read-only - `quantityMinimum` - Required, must be >= 0 - `quantityMaximum` - Required, must be >= quantityMinimum - `inventoryLocationID` - Read-only on update - `productID` - Required on create ```