{
  "service": "snipe_it",
  "displayName": "Snipe-IT",
  "categories": [
    "Productivity",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "snipe_it_api_key",
      "description": "Snipe-IT API key sent as an Authorization Bearer token. Create or view API keys from your Snipe-IT user menu under Manage API keys.",
      "extraFields": [
        {
          "key": "instanceUrl",
          "label": "Instance URL",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "https://assets.example.com",
          "description": "Your public HTTPS Snipe-IT instance URL. URLs ending in /api/v1 are also accepted."
        }
      ]
    }
  ],
  "homepageUrl": "https://snipeitapp.com",
  "actions": [
    {
      "id": "snipe_it.get_current_user",
      "service": "snipe_it",
      "name": "get_current_user",
      "description": "Get details for the Snipe-IT user associated with the API key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input parameters are required."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "One object returned by the Snipe-IT API."
          }
        },
        "additionalProperties": false,
        "description": "The current Snipe-IT API user."
      }
    },
    {
      "id": "snipe_it.list_categories",
      "service": "snipe_it",
      "name": "list_categories",
      "description": "List Snipe-IT categories with optional search and filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of records to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset to use when retrieving results."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Search string."
          },
          "sort": {
            "type": "string",
            "minLength": 1,
            "description": "Field to order by."
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "Sort order."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Category name to filter by."
          },
          "categoryId": {
            "type": "integer",
            "description": "ID number of the category to filter by."
          },
          "categoryType": {
            "type": "string",
            "enum": [
              "asset",
              "accessory",
              "consumable",
              "component",
              "license"
            ],
            "description": "Type of category to filter by."
          },
          "useDefaultEula": {
            "type": "boolean",
            "description": "Filter by whether the category uses the default EULA."
          },
          "requireAcceptance": {
            "type": "boolean",
            "description": "Filter by whether the category requires acceptance."
          },
          "checkinEmail": {
            "type": "boolean",
            "description": "Filter by whether the category sends check-in email."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Snipe-IT categories."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of matching records returned by Snipe-IT."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One object returned by the Snipe-IT API."
            },
            "description": "Rows returned by Snipe-IT."
          }
        },
        "additionalProperties": false,
        "description": "A page of Snipe-IT categories."
      }
    },
    {
      "id": "snipe_it.list_companies",
      "service": "snipe_it",
      "name": "list_companies",
      "description": "List Snipe-IT companies.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Company name to filter by."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Snipe-IT companies."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of matching records returned by Snipe-IT."
          },
          "companies": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One object returned by the Snipe-IT API."
            },
            "description": "Rows returned by Snipe-IT."
          }
        },
        "additionalProperties": false,
        "description": "A page of Snipe-IT companies."
      }
    },
    {
      "id": "snipe_it.list_hardware",
      "service": "snipe_it",
      "name": "list_hardware",
      "description": "List Snipe-IT hardware assets with optional search and filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of records to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset to use when retrieving results."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Search string."
          },
          "sort": {
            "type": "string",
            "minLength": 1,
            "description": "Field to order by."
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "Sort order."
          },
          "orderNumber": {
            "type": "string",
            "minLength": 1,
            "description": "Return only assets associated with a specific order number."
          },
          "modelId": {
            "type": "integer",
            "description": "Restrict asset results to this asset model ID."
          },
          "categoryId": {
            "type": "integer",
            "description": "Restrict asset results to this category ID."
          },
          "manufacturerId": {
            "type": "integer",
            "description": "Restrict asset results to this manufacturer ID."
          },
          "companyId": {
            "type": "integer",
            "description": "Restrict asset results to this company ID."
          },
          "locationId": {
            "type": "integer",
            "description": "Restrict asset results to this location ID."
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "description": "Restrict asset results to a documented Snipe-IT status value."
          },
          "statusId": {
            "type": "integer",
            "description": "Restrict asset results to this status label ID."
          },
          "assignedTo": {
            "type": "integer",
            "description": "Restrict asset results to this assigned user or item ID."
          },
          "assignedType": {
            "type": "string",
            "enum": [
              "App\\Models\\Asset",
              "App\\Models\\Accessory",
              "App\\Models\\User"
            ],
            "description": "Restrict asset results by assigned item type."
          },
          "filter": {
            "type": "object",
            "additionalProperties": {
              "description": "A filter value accepted by Snipe-IT."
            },
            "description": "Key-value filters to send as Snipe-IT's JSON filter query parameter."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Snipe-IT hardware assets."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of matching records returned by Snipe-IT."
          },
          "hardware": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One object returned by the Snipe-IT API."
            },
            "description": "Rows returned by Snipe-IT."
          }
        },
        "additionalProperties": false,
        "description": "A page of Snipe-IT hardware assets."
      }
    },
    {
      "id": "snipe_it.list_status_labels",
      "service": "snipe_it",
      "name": "list_status_labels",
      "description": "List Snipe-IT status labels with optional search and filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of records to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset to use when retrieving results."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Search string."
          },
          "sort": {
            "type": "string",
            "minLength": 1,
            "description": "Field to order by."
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "Sort order."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Status label name to filter by."
          },
          "statusType": {
            "type": "string",
            "enum": [
              "deployable",
              "undeployable",
              "pending",
              "archived"
            ],
            "description": "Status label type to filter by."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Snipe-IT status labels."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of matching records returned by Snipe-IT."
          },
          "statusLabels": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One object returned by the Snipe-IT API."
            },
            "description": "Rows returned by Snipe-IT."
          }
        },
        "additionalProperties": false,
        "description": "A page of Snipe-IT status labels."
      }
    },
    {
      "id": "snipe_it.list_users",
      "service": "snipe_it",
      "name": "list_users",
      "description": "List Snipe-IT users with optional search and filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "Number of records to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Offset to use when retrieving results."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Search string."
          },
          "sort": {
            "type": "string",
            "minLength": 1,
            "description": "Field to order by."
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "Sort order."
          },
          "firstName": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by first name."
          },
          "lastName": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by last name."
          },
          "username": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by username."
          },
          "email": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by email address or email search text."
          },
          "employeeNum": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by employee number."
          },
          "state": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by state."
          },
          "zip": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by zip or postal code."
          },
          "country": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by country."
          },
          "groupId": {
            "type": "integer",
            "description": "Filter by group ID."
          },
          "departmentId": {
            "type": "integer",
            "description": "Filter by department ID."
          },
          "companyId": {
            "type": "integer",
            "description": "Filter by company ID."
          },
          "locationId": {
            "type": "integer",
            "description": "Filter by location ID."
          },
          "deleted": {
            "type": "boolean",
            "description": "Return only deleted users."
          },
          "all": {
            "type": "boolean",
            "description": "Return both deleted and active users."
          },
          "ldapImport": {
            "type": "boolean",
            "description": "Filter by whether the user was imported or synced with LDAP."
          },
          "assetsCount": {
            "type": "integer",
            "description": "Filter by number of checked out assets."
          },
          "licensesCount": {
            "type": "integer",
            "description": "Filter by number of checked out licenses."
          },
          "accessoriesCount": {
            "type": "integer",
            "description": "Filter by number of checked out accessories."
          },
          "consumablesCount": {
            "type": "integer",
            "description": "Filter by number of checked out consumables."
          },
          "remote": {
            "type": "boolean",
            "description": "Filter by whether the user is marked as remote."
          },
          "vip": {
            "type": "boolean",
            "description": "Filter by whether the user is marked as VIP."
          },
          "startDate": {
            "type": "string",
            "description": "Filter by start date.",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "description": "Filter by end date.",
            "format": "date"
          },
          "filter": {
            "type": "object",
            "additionalProperties": {
              "description": "A filter value accepted by Snipe-IT."
            },
            "description": "Key-value filters to send as Snipe-IT's JSON filter query parameter."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Snipe-IT users."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of matching records returned by Snipe-IT."
          },
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One object returned by the Snipe-IT API."
            },
            "description": "Rows returned by Snipe-IT."
          }
        },
        "additionalProperties": false,
        "description": "A page of Snipe-IT users."
      }
    }
  ]
}
