diff --git a/.scribe/.filehashes b/.scribe/.filehashes new file mode 100644 index 000000000000..b35f9c5ab918 --- /dev/null +++ b/.scribe/.filehashes @@ -0,0 +1,4 @@ +# GENERATED. YOU SHOULDN'T MODIFY OR DELETE THIS FILE. +# Scribe uses this file to know when you change something manually in your docs. +.scribe/intro.md=f325b28dd095cc9f79495c3014b20f70 +.scribe/auth.md=a1780016c25c90a3c1e981b22cfb10e6 \ No newline at end of file diff --git a/.scribe/auth.md b/.scribe/auth.md new file mode 100644 index 000000000000..ca3a1ab34d0f --- /dev/null +++ b/.scribe/auth.md @@ -0,0 +1,7 @@ +# Authenticating requests + +To authenticate requests, include an **`Authorization`** header with the value **`"Bearer your-token"`**. + +All authenticated endpoints are marked with a `requires authentication` badge in the documentation below. + +If your account has API access enabled, you can generate a token by clicking in the top right account menu and clicking API tokens. diff --git a/.scribe/endpoints/00.yaml b/.scribe/endpoints/00.yaml new file mode 100644 index 000000000000..0972bba86165 --- /dev/null +++ b/.scribe/endpoints/00.yaml @@ -0,0 +1,329 @@ +name: Account +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/account/requests + metadata: + groupName: Account + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Display Requested Assets' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=qIWm6chVMaJXUcKG9E8EHhnb7F9wQT14AjEraiFE; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/account/eulas + metadata: + groupName: Account + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Display Accepted EULAs' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=nhItaWioeRLO0dKBgjno1X73ttHn50uXRQ7L7BAc; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/account/request/{asset_id}' + metadata: + groupName: Account + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Store Asset Request' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/account/request/{asset_id}/cancel' + metadata: + groupName: Account + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Cancel Asset Request' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/account/personal-access-tokens + metadata: + groupName: Account + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create API token' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/account/personal-access-tokens + metadata: + groupName: Account + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show API tokens' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=yUjH3zpUXM18qZVCvvVEp1y5zfNNok8NctCrwGof; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/account/personal-access-tokens/{tokenId}' + metadata: + groupName: Account + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete API token' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + tokenId: + name: tokenId + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + tokenId: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/01.yaml b/.scribe/endpoints/01.yaml new file mode 100644 index 000000000000..d784a33f3932 --- /dev/null +++ b/.scribe/endpoints/01.yaml @@ -0,0 +1,2180 @@ +name: Assets +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/account/requestable/hardware + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Requestable Assets' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=9bkg2C4WhllCWmz0TI3hJlkOmzBIHtZh8c9EhOQi; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/reports/depreciation + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Assets' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + action: + name: action + description: 'The action to filter by: audits, checkins.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + upcoming_status: + name: upcoming_status + description: 'The status to filter by: `due`, `overdue`, `due-or-overdue`.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + status: + name: status + description: 'The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + status_id: + name: status_id + description: 'The asset status ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + asset_tag: + name: asset_tag + description: 'The asset tag to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + serial: + name: serial + description: 'The serial number to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + requestable: + name: requestable + description: 'Filter by requestable assets.' + required: false + example: null + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + model_id: + name: model_id + description: 'The model ID or IDs to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + category_id: + name: category_id + description: 'The category ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + location_id: + name: location_id + description: 'The location ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + rtd_location_id: + name: rtd_location_id + description: 'The RTD location ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + supplier_id: + name: supplier_id + description: 'The supplier ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + asset_eol_date: + name: asset_eol_date + description: 'date The asset end-of-life date to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + assigned_to: + name: assigned_to + description: 'The user ID or department ID the asset is assigned to.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + assigned_type: + name: assigned_type + description: "The type of assignment, either 'user' or 'asset' or 'location'." + required: false + example: user + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + company_id: + name: company_id + description: 'The company ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + manufacturer_id: + name: manufacturer_id + description: 'The manufacturer ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + depreciation_id: + name: depreciation_id + description: 'The depreciation ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + byod: + name: byod + description: 'Filter by BYOD assets.' + required: false + example: true + type: boolean + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + order_number: + name: order_number + description: 'The order number to filter by. Example:' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + search: + name: search + description: 'A text string to search for. Example:' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + filter: + name: filter + description: 'A JSON object of key/value pairs to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanQueryParameters: + assigned_type: user + byod: true + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=1RCnTHUFbqwTIQa5a3jw9Z163XXINM8alyMsLk0F; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/hardware/selectlist + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: Selectlist + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + $search: + name: $search + description: 'String to search on.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + $companyId: + name: $companyId + description: 'Company ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + $assetStatusType: + name: $assetStatusType + description: 'The asset status type to filter by: `RTD`.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=0J6iH1gl0c15eGQzbr0AXYKNPWvATyX8x6OsoSrW; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/hardware/{asset_id}/licenses' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Licenses Assigned to Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: architecto + queryParameters: + $assetId: + name: $assetId + description: 'The asset ID.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + $assetId: 1 + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=fG7jXtcAYCvTOFyyGxGIuUODAbj1PT5ZAaug4SRy; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/hardware/bytag/{tag}' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Lookup by Tag' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + tag: + name: tag + description: 'The asset tag.' + required: true + example: '1' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + tag: '1' + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=JUM59W5u4D1Jdj1Ai98JgFlM3Ts8igVm7P7mFeXB; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/hardware/bytag/{any}' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Lookup by Tag' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + any: + name: any + description: '' + required: true + example: '|{+-0p' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + tag: + name: tag + description: 'The asset tag.' + required: true + example: '1' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + any: '|{+-0p' + tag: '1' + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=VJrksR9BVpURY1sWO0ib6MKfDb6nIxMa2pVIQr5p; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/hardware/bytag/{any}/checkout' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Checkout by Asset Tag' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + any: + name: any + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + any: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/hardware/bytag/{any}/checkin' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Checkin by Asset Tag' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + any: + name: any + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + any: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/hardware/checkinbytag + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Checkin by Asset Tag' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/hardware/byserial/{any}' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Lookup by Serial' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + any: + name: any + description: '' + required: true + example: '|{+-0p' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + serial: + name: serial + description: '' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + any: '|{+-0p' + serial: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=llOTTmFchjax52EyYJzjxhiyZiEXIBU0ZcfnoN6T; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/hardware/{action}/{upcoming_status}' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Assets' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + action: + name: action + description: '' + required: true + example: audit|audits|checkins + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + upcoming_status: + name: upcoming_status + description: '' + required: true + example: due|overdue|due-or-overdue + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + action: audit|audits|checkins + upcoming_status: due|overdue|due-or-overdue + queryParameters: + action: + name: action + description: 'The action to filter by: audits, checkins.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + upcoming_status: + name: upcoming_status + description: 'The status to filter by: `due`, `overdue`, `due-or-overdue`.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + status: + name: status + description: 'The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + status_id: + name: status_id + description: 'The asset status ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + asset_tag: + name: asset_tag + description: 'The asset tag to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + serial: + name: serial + description: 'The serial number to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + requestable: + name: requestable + description: 'Filter by requestable assets.' + required: false + example: null + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + model_id: + name: model_id + description: 'The model ID or IDs to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + category_id: + name: category_id + description: 'The category ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + location_id: + name: location_id + description: 'The location ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + rtd_location_id: + name: rtd_location_id + description: 'The RTD location ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + supplier_id: + name: supplier_id + description: 'The supplier ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + asset_eol_date: + name: asset_eol_date + description: 'date The asset end-of-life date to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + assigned_to: + name: assigned_to + description: 'The user ID or department ID the asset is assigned to.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + assigned_type: + name: assigned_type + description: "The type of assignment, either 'user' or 'asset' or 'location'." + required: false + example: user + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + company_id: + name: company_id + description: 'The company ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + manufacturer_id: + name: manufacturer_id + description: 'The manufacturer ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + depreciation_id: + name: depreciation_id + description: 'The depreciation ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + byod: + name: byod + description: 'Filter by BYOD assets.' + required: false + example: true + type: boolean + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + order_number: + name: order_number + description: 'The order number to filter by. Example:' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + search: + name: search + description: 'A text string to search for. Example:' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + filter: + name: filter + description: 'A JSON object of key/value pairs to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanQueryParameters: + assigned_type: user + byod: true + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=jun9NCBvUvQJXjBPXHEgZB9NPzF1mS6NTwzDmHDe; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/hardware/audit + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Audit Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/hardware/{asset_id}/audit' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Audit Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/hardware/{id}/checkin' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Checkin Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the hardware.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/hardware/{id}/checkout' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Checkout Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the hardware.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/hardware/{asset_id}/restore' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Restore Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/hardware/{asset_id}/assigned/assets' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Assets Assigned to Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=DIPJZUWSuyNUFLyBNwFMer4zkxMi0tReW3dy4QPK; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/hardware/{asset_id}/assigned/accessories' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Accessories Assigned to Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=F9Wogg2lFVX0DlkB6ZfYreUAmJeGi8jFA5O8VrAI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/hardware/{asset_id}/assigned/components' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Components Assigned to Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=bKDaNYTiCn9wzCQETCLfjwUEaIXEpCWfmHVEAfUz; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PATCH + uri: 'api/v1/hardware/{asset_id}' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: 1 + queryParameters: + model_id: + name: model_id + description: 'The model ID to associate the asset with.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + company_id: + name: company_id + description: 'The company ID to associate the asset with.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + rtd_location_id: + name: rtd_location_id + description: 'The RTD location ID to associate the asset with.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + last_audit_date: + name: last_audit_date + description: 'date The last audit date for the asset.' + required: false + example: '2023-12-31' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + image: + name: image + description: 'file The image file to upload for the asset.' + required: false + example: (binary) + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + model_id: 1 + company_id: 1 + rtd_location_id: 1 + last_audit_date: '2023-12-31' + image: (binary) + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/v1/hardware/{asset_id}' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: 1 + queryParameters: + model_id: + name: model_id + description: 'The model ID to associate the asset with.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + company_id: + name: company_id + description: 'The company ID to associate the asset with.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + rtd_location_id: + name: rtd_location_id + description: 'The RTD location ID to associate the asset with.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + last_audit_date: + name: last_audit_date + description: 'date The last audit date for the asset.' + required: false + example: '2023-12-31' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + image: + name: image + description: 'file The image file to upload for the asset.' + required: false + example: (binary) + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + model_id: 1 + company_id: 1 + rtd_location_id: 1 + last_audit_date: '2023-12-31' + image: (binary) + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/hardware + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Assets' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + action: + name: action + description: 'The action to filter by: audits, checkins.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + upcoming_status: + name: upcoming_status + description: 'The status to filter by: `due`, `overdue`, `due-or-overdue`.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + status: + name: status + description: 'The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + status_id: + name: status_id + description: 'The asset status ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + asset_tag: + name: asset_tag + description: 'The asset tag to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + serial: + name: serial + description: 'The serial number to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + requestable: + name: requestable + description: 'Filter by requestable assets.' + required: false + example: null + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + model_id: + name: model_id + description: 'The model ID or IDs to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + category_id: + name: category_id + description: 'The category ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + location_id: + name: location_id + description: 'The location ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + rtd_location_id: + name: rtd_location_id + description: 'The RTD location ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + supplier_id: + name: supplier_id + description: 'The supplier ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + asset_eol_date: + name: asset_eol_date + description: 'date The asset end-of-life date to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + assigned_to: + name: assigned_to + description: 'The user ID or department ID the asset is assigned to.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + assigned_type: + name: assigned_type + description: "The type of assignment, either 'user' or 'asset' or 'location'." + required: false + example: user + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + company_id: + name: company_id + description: 'The company ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + manufacturer_id: + name: manufacturer_id + description: 'The manufacturer ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + depreciation_id: + name: depreciation_id + description: 'The depreciation ID to filter by.' + required: false + example: null + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + byod: + name: byod + description: 'Filter by BYOD assets.' + required: false + example: true + type: boolean + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + order_number: + name: order_number + description: 'The order number to filter by. Example:' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + search: + name: search + description: 'A text string to search for. Example:' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + filter: + name: filter + description: 'A JSON object of key/value pairs to filter by.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanQueryParameters: + assigned_type: user + byod: true + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=OpEopdxJjQ1quNst6C1aE9VzEFgonGA6WTKO283D; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/hardware + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/hardware/{hardware}' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + hardware: + name: hardware + description: 'The hardware.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + hardware: architecto + queryParameters: + $assetId: + name: $assetId + description: 'The asset ID.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + $assetId: 1 + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=DivpAbTSWduaC7mBZSElSCp2pLYXeny0mPAaJbuq; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/hardware/{hardware}' + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Asset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + hardware: + name: hardware + description: 'The hardware.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + hardware: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/hardware/labels + metadata: + groupName: Assets + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Generate Label by Asset Tag' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/02.yaml b/.scribe/endpoints/02.yaml new file mode 100644 index 000000000000..943b5314d47e --- /dev/null +++ b/.scribe/endpoints/02.yaml @@ -0,0 +1,636 @@ +name: Accessories +description: '' +endpoints: + - + httpMethods: + - GET + uri: 'api/v1/accessories/{accessory}/checkedout' + metadata: + groupName: Accessories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Accessory Checkouts' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + accessory: + name: accessory + description: 'The accessory.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + accessory: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=QwqPH3txF8T3F17zuocUxlzlAourAOPvfWbLeuj9; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/accessories/{accessory_id}/checkout' + metadata: + groupName: Accessories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Checkout Accessory' + description: |- + If Slack is enabled and/or asset acceptance is enabled, it will also + trigger a Slack message and send an email. + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + accessory_id: + name: accessory_id + description: 'The ID of the accessory.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + accessory_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/accessories/{accessory}/checkin' + metadata: + groupName: Accessories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Checkin Accessory' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + accessory: + name: accessory + description: 'The accessory.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + accessory: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/accessories/selectlist + metadata: + groupName: Accessories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: Selectlist + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + search: + name: search + description: 'A search term to filter results by name.' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=kCGqdKxExAZopEwv7oy5l7SRnyqXXXDCU5Jyu7jU; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/accessories + metadata: + groupName: Accessories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List accessories' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + search: + name: search + description: 'A search term to filter results by.' + required: false + example: keyboard + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + 'filter[]': + name: 'filter[]' + description: 'A field to filter by. Example' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + company_id: + name: company_id + description: 'Filter by company ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + category_id: + name: category_id + description: 'Filter by category ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + manufacturer_id: + name: manufacturer_id + description: 'Filter by manufacturer ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + supplier_id: + name: supplier_id + description: 'Filter by supplier ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + location_id: + name: location_id + description: 'Filter by location ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + notes: + name: notes + description: 'Filter by notes.' + required: false + example: 'For office use only' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + offset: + name: offset + description: 'The number of items to skip before starting to collect the result set.' + required: false + example: 0 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + limit: + name: limit + description: 'The number of items to return.' + required: false + example: 50 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + sort: + name: sort + description: 'The field to sort by.' + required: false + example: created_at + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + order: + name: order + description: 'The order to sort by.' + required: false + example: desc + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + search: keyboard + 'filter[]': architecto + company_id: 1 + category_id: 1 + manufacturer_id: 1 + supplier_id: 1 + location_id: 1 + notes: 'For office use only' + offset: 0 + limit: 50 + sort: created_at + order: desc + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=2HABGaRbPqMGeiNPKWTPnN0AwM4t7W2yN4TFOJqm; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/accessories + metadata: + groupName: Accessories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Accessory' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: 'The name of the accessory.' + required: true + example: 'Apple Bluetooth Keyboard' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + qty: + name: qty + description: 'The number of accessories to create.' + required: true + example: 10 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + category_id: + name: category_id + description: 'The ID of the category to assign this accessory to.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + image: + name: image + description: '' + required: false + example: null + type: file + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: 'Apple Bluetooth Keyboard' + qty: 10 + category_id: 1 + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/accessories/{id}' + metadata: + groupName: Accessories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Accessory' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the accessory.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=1Tv5gekmNofKNDwolDkOEcEH9JUfM9rX0PaTFfWI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/accessories/{id}' + metadata: + groupName: Accessories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update accessory.' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the accessory.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/accessories/{id}' + metadata: + groupName: Accessories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Accessory' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the accessory.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/03.yaml b/.scribe/endpoints/03.yaml new file mode 100644 index 000000000000..4e7993460878 --- /dev/null +++ b/.scribe/endpoints/03.yaml @@ -0,0 +1,306 @@ +name: Categories +description: '' +endpoints: + - + httpMethods: + - GET + uri: 'api/v1/categories/{item_type}/selectlist' + metadata: + groupName: Categories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: Selectlist + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + item_type: + name: item_type + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + item_type: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=Wy5FSLyBn1xpLQy08hVrBlmoANJohF4ZIzpEcIZy; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/categories + metadata: + groupName: Categories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Categories' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=ErvltKvHZdVobMWCabFa83cWRCOTTtIgAPf7kLWS; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/categories + metadata: + groupName: Categories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Category' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/categories/{id}' + metadata: + groupName: Categories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Category' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the category.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=V2YFWiG0waCLFesMFr3kkLb0Io41yz4MPzVEfytq; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/categories/{id}' + metadata: + groupName: Categories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Category' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the category.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/categories/{id}' + metadata: + groupName: Categories + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Category' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the category.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/04.yaml b/.scribe/endpoints/04.yaml new file mode 100644 index 000000000000..5c4df73c5f24 --- /dev/null +++ b/.scribe/endpoints/04.yaml @@ -0,0 +1,295 @@ +name: Companies +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/companies/selectlist + metadata: + groupName: Companies + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: Selectlist + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=IqjgsK1DVTQS5qlZI7l96rTJH0m95aILfWx6eAS2; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/companies + metadata: + groupName: Companies + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Companies' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=cEVlfAwtjQtu004rU9aEgFwcozHbApb3l0gEpL3C; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/companies + metadata: + groupName: Companies + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Company' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/companies/{id}' + metadata: + groupName: Companies + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Company' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the company.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=YqczMPKZfCp7CKkULGsRoDqufIWQ9yGkni3Cto4R; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/companies/{id}' + metadata: + groupName: Companies + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Company' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the company.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/companies/{id}' + metadata: + groupName: Companies + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Company' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the company.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/05.yaml b/.scribe/endpoints/05.yaml new file mode 100644 index 000000000000..f009ef676d6a --- /dev/null +++ b/.scribe/endpoints/05.yaml @@ -0,0 +1,394 @@ +name: Departments +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/departments/selectlist + metadata: + groupName: Departments + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: Selectlist + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=0Ld2mnJEdBRIaREXQ37xGTuIS9SWJ4pT3WC79wc3; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/departments + metadata: + groupName: Departments + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Departments' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + search: + name: search + description: 'Search term to filter results.' + required: false + example: IT + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + name: + name: name + description: 'Filter by exact department name.' + required: false + example: IT + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + company_id: + name: company_id + description: 'Filter by exact company ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + manager_id: + name: manager_id + description: 'Filter by exact manager (user) ID. Example:' + required: false + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + location_id: + name: location_id + description: 'Filter by exact location ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + sort: + name: sort + description: 'Column to sort results by. Allowed values: id, name, image, users_count, notes, created_at, updated_at, location, manager, company. Default: created_at.' + required: false + example: name + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + order: + name: order + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + required: false + example: asc + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + offset: + name: offset + description: 'Offset/starting position of the results. Default: 0.' + required: false + example: 0 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + limit: + name: limit + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + required: false + example: 50 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + search: IT + name: IT + company_id: 1 + manager_id: 16 + location_id: 1 + sort: name + order: asc + offset: 0 + limit: 50 + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=A3I9GYZHlismQEeDjfx7XM9EFccWImskxth6x9OH; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/departments + metadata: + groupName: Departments + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Department' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/departments/{id}' + metadata: + groupName: Departments + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Department' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the department.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=f5nA1I31NqT4m4T3BeSDmKt2LuBQs7KtcZZNRDKq; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/departments/{id}' + metadata: + groupName: Departments + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Department' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the department.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/departments/{id}' + metadata: + groupName: Departments + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Department' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the department.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/06.yaml b/.scribe/endpoints/06.yaml new file mode 100644 index 000000000000..88b621631974 --- /dev/null +++ b/.scribe/endpoints/06.yaml @@ -0,0 +1,419 @@ +name: Components +description: '' +endpoints: + - + httpMethods: + - GET + uri: 'api/v1/components/{component}/assets' + metadata: + groupName: Components + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Component Assets' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + component: + name: component + description: 'The component.' + required: true + example: 3 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + component: 3 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=wiPOiV7Xae1fyzS2Jv3w9d060WDRgnET70IrBjTj; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/components/{id}/checkin' + metadata: + groupName: Components + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Checkin Component' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the component.' + required: true + example: 3 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 3 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/components/{id}/checkout' + metadata: + groupName: Components + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Checkout Component' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the component.' + required: true + example: 3 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 3 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + assigned_to: + name: assigned_to + description: 'The id of an existing record in the assets table.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + assigned_qty: + name: assigned_qty + description: '' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + assigned_to: architecto + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/components + metadata: + groupName: Components + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Categories' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=vXpBDH4e4puagaeAOAWHnpHEOQ7rCwXKeEDeGn5W; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/components + metadata: + groupName: Components + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Component' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/components/{id}' + metadata: + groupName: Components + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Component' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the component.' + required: true + example: 3 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 3 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=mIFtURJNZowrCIpSMAMYNVYW5XvKIReOCIJ57XgL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/components/{id}' + metadata: + groupName: Components + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Component' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the component.' + required: true + example: 3 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 3 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/components/{id}' + metadata: + groupName: Components + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Component' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the component.' + required: true + example: 3 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 3 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/07.yaml b/.scribe/endpoints/07.yaml new file mode 100644 index 000000000000..b8f9d8509824 --- /dev/null +++ b/.scribe/endpoints/07.yaml @@ -0,0 +1,535 @@ +name: Consumables +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/consumables/selectlist + metadata: + groupName: Consumables + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: Selectlist + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=9SzZeaG6J8yoJtsrcqY5kJPcLvX7ObZeYK0JivkB; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/consumables/{id}/users' + metadata: + groupName: Consumables + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'User Assignments' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the consumable.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=eO7NKRGNCHJ34NL6woGI5Ux80o2tg9rIBW0LuGGd; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/consumables/{consumable}/checkout' + metadata: + groupName: Consumables + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Checkout Consumable' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + consumable: + name: consumable + description: 'The consumable.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + consumable: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/consumables + metadata: + groupName: Consumables + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Consumables' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + filter: + name: filter + description: 'A JSON encoded array of key/value pairs to filter results by.' + required: false + example: '{"company":"1","location":"2"}' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + search: + name: search + description: 'A search term to filter results by.' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + name: + name: name + description: 'Filter by exact name.' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + company_id: + name: company_id + description: 'Filter by exact company ID.' + required: false + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + category_id: + name: category_id + description: 'Filter by exact category ID.' + required: false + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + model_number: + name: model_number + description: 'Filter by exact model number.' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + manufacturer_id: + name: manufacturer_id + description: 'Filter by exact manufacturer ID.' + required: false + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + supplier_id: + name: supplier_id + description: 'Filter by exact supplier ID.' + required: false + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + location_id: + name: location_id + description: 'Filter by exact location ID.' + required: false + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + notes: + name: notes + description: 'Filter by exact notes.' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + sort: + name: sort + description: 'The column to sort results by. Must be one of the following: id, name, order_number, min_amt, purchase_date, purchase_cost, company, category, model_number, item_no, manufacturer, location, qty, image, company, location, category, supplier, manufacturer. Default is created_at.' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + order: + name: order + description: 'The order to sort results by. Must be one of the following: asc, desc. Default is desc.' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanQueryParameters: + filter: '{"company":"1","location":"2"}' + search: architecto + name: architecto + company_id: 16 + category_id: 16 + model_number: architecto + manufacturer_id: 16 + supplier_id: 16 + location_id: 16 + notes: architecto + sort: architecto + order: architecto + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=WMv6quPUXaLnZTkEXk5aBwdTDMuUgt7fQTd6uLZf; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/consumables + metadata: + groupName: Consumables + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Store a newly created resource in storage.' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/consumables/{id}' + metadata: + groupName: Consumables + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Consumable' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the consumable.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=oTfWSAjrq9p5g7qEYt7eFY4Dl7io060HverF1daF; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/consumables/{id}' + metadata: + groupName: Consumables + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Consumable' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the consumable.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/consumables/{id}' + metadata: + groupName: Consumables + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Consumable' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the consumable.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/08.yaml b/.scribe/endpoints/08.yaml new file mode 100644 index 000000000000..7976c70be71d --- /dev/null +++ b/.scribe/endpoints/08.yaml @@ -0,0 +1,244 @@ +name: Depreciations +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/depreciations + metadata: + groupName: Depreciations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Depreciations' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=TaZAI56rS9h74YByHlSA9ZrXGsTjQD4onwKaqiFF; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/depreciations + metadata: + groupName: Depreciations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Depreciation' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/depreciations/{depreciation_id}' + metadata: + groupName: Depreciations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Depreciation' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + depreciation_id: + name: depreciation_id + description: 'The ID of the depreciation.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + depreciation_id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=qFky4u180BfuHQB1d4a5A7K5Q4MOHcVdqELFA4ow; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/depreciations/{depreciation_id}' + metadata: + groupName: Depreciations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Depreciation' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + depreciation_id: + name: depreciation_id + description: 'The ID of the depreciation.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + depreciation_id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/depreciations/{depreciation_id}' + metadata: + groupName: Depreciations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Depreciation' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + depreciation_id: + name: depreciation_id + description: 'The ID of the depreciation.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + depreciation_id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/09.yaml b/.scribe/endpoints/09.yaml new file mode 100644 index 000000000000..5b8aa1fafbcc --- /dev/null +++ b/.scribe/endpoints/09.yaml @@ -0,0 +1,726 @@ +name: 'Custom Fields' +description: '' +endpoints: + - + httpMethods: + - POST + uri: 'api/v1/fields/fieldsets/{id}/order' + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Reorder Fields' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the fieldset.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/fields/{field}/associate' + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Add Field to Fieldset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + field: + name: field + description: 'The field.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + field: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/fields/{field}/disassociate' + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Remove Field from Fieldset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + field: + name: field + description: 'The field.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + field: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/fields + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Custom Fields' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=MTrOxDhLsWMBw1aLYKK9q1GA3VjT43PhCRp7KBa9; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/fields + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Field' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/fields/{field}' + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Field' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + field: + name: field + description: 'The field.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + field: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=jdlBn85i46xp3MdUb7Dbb1igonFqeCNdzQwTOmnl; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/fields/{field}' + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Field' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + field: + name: field + description: 'The field.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + field: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/fields/{field}' + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Field' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + field: + name: field + description: 'The field.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + field: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/fieldsets/{fieldset}/fields' + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: 'Custom Fieldsets' + subgroupDescription: '' + title: 'Show Fields in Fieldset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + fieldset: + name: fieldset + description: 'The fieldset.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + fieldset: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/fieldsets/{fieldset}/fields/{model}' + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: 'Custom Fieldsets' + subgroupDescription: '' + title: 'Fields in Fieldset with Default Values for Model' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + fieldset: + name: fieldset + description: 'The fieldset.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + model: + name: model + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + fieldset: architecto + model: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/fieldsets + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: 'Custom Fieldsets' + subgroupDescription: '' + title: 'List Fieldsets' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=DtH1Q5VV2HTu9NhlX5CxdYBImN4ZqxolMxRmhDyk; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/fieldsets + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: 'Custom Fieldsets' + subgroupDescription: '' + title: 'Create Fieldset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/fieldsets/{id}' + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: 'Custom Fieldsets' + subgroupDescription: '' + title: 'Show Fieldset and Fields' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the fieldset.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=haApTgbAdDCFdvIN3hU8DshPXbfKMRdlXqBMBKdM; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/fieldsets/{id}' + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: 'Custom Fieldsets' + subgroupDescription: '' + title: 'Update Fieldset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the fieldset.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/fieldsets/{id}' + metadata: + groupName: 'Custom Fields' + groupDescription: '' + subgroup: 'Custom Fieldsets' + subgroupDescription: '' + title: 'Delete Fieldset' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the fieldset.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/10.yaml b/.scribe/endpoints/10.yaml new file mode 100644 index 000000000000..cada145ac166 --- /dev/null +++ b/.scribe/endpoints/10.yaml @@ -0,0 +1,244 @@ +name: 'User Groups' +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/groups + metadata: + groupName: 'User Groups' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Display a listing of the resource.' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=evRZVbrjaLPlDGuAmSjuQxAfBkaXVVI3h6YJ8xCC; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/groups + metadata: + groupName: 'User Groups' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Group' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/groups/{id}' + metadata: + groupName: 'User Groups' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Group' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the group.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=lUFcyrjpTiMJiziJCYaZzhxr9o4YDOHuJhtyxe9O; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/groups/{id}' + metadata: + groupName: 'User Groups' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Group' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the group.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/groups/{id}' + metadata: + groupName: 'User Groups' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Remove the specified resource from storage.' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the group.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/11.yaml b/.scribe/endpoints/11.yaml new file mode 100644 index 000000000000..4d6233dd1049 --- /dev/null +++ b/.scribe/endpoints/11.yaml @@ -0,0 +1,354 @@ +name: Maintenances +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/maintenances + metadata: + groupName: Maintenances + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Maintenances' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + search: + name: search + description: 'Search term to filter results.' + required: false + example: repair + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + asset_id: + name: asset_id + description: 'Filter by exact asset ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + supplier_id: + name: supplier_id + description: 'Filter by exact supplier ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + created_by: + name: created_by + description: 'Filter by exact user ID who created the maintenance. Example' + required: false + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + url: + name: url + description: 'Filter by exact URL.' + required: false + example: 'http://example.com' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + asset_maintenance_type: + name: asset_maintenance_type + description: 'Filter by exact maintenance type.' + required: false + example: repair + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + sort: + name: sort + description: 'Column to sort results by. Allowed values: id, name, asset_maintenance_time, asset_maintenance_type, cost, start_date, completion_date, notes, asset_tag, asset_name, serial, created_by, supplier, location, is_warranty, status_label. Default: created_at.' + required: false + example: name + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + order: + name: order + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + required: false + example: asc + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + offset: + name: offset + description: 'Offset/starting position of the results. Default: 0.' + required: false + example: 0 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + limit: + name: limit + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + required: false + example: 50 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + search: repair + asset_id: 1 + supplier_id: 1 + created_by: 16 + url: 'http://example.com' + asset_maintenance_type: repair + sort: name + order: asc + offset: 0 + limit: 50 + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=HIPWn994ZVwWTllISCuyT1n0vLjhvE6GtJdyvVt5; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/maintenances + metadata: + groupName: Maintenances + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Maintenance' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/maintenances/{id}' + metadata: + groupName: Maintenances + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'View Maintenance' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the maintenance.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=SMRgTfJyiKW4MwqoQkxPhRwZ7s0NG6iXfqrgvOF3; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/maintenances/{id}' + metadata: + groupName: Maintenances + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Maintenance' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the maintenance.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/maintenances/{id}' + metadata: + groupName: Maintenances + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Maintenance' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the maintenance.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/12.yaml b/.scribe/endpoints/12.yaml new file mode 100644 index 000000000000..2a00226ef1e4 --- /dev/null +++ b/.scribe/endpoints/12.yaml @@ -0,0 +1,181 @@ +name: Imports +description: '' +endpoints: + - + httpMethods: + - POST + uri: 'api/v1/imports/process/{import}' + metadata: + groupName: Imports + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Process Import' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + import: + name: import + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + import: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/imports + metadata: + groupName: Imports + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Import Files' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=lj8o7doJNMvuEIVNyZKehmNRHGnHDPN2afmwMD6i; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/imports + metadata: + groupName: Imports + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Save Import File' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/imports/{id}' + metadata: + groupName: Imports + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Import File' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the import.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/13.yaml b/.scribe/endpoints/13.yaml new file mode 100644 index 000000000000..fbfaee8f1c9f --- /dev/null +++ b/.scribe/endpoints/13.yaml @@ -0,0 +1,116 @@ +name: Labels +description: '' +endpoints: + - + httpMethods: + - GET + uri: 'api/v1/labels/{name}' + metadata: + groupName: Labels + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Label' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + name: + name: name + description: '' + required: true + example: '|{+-0p' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + name: '|{+-0p' + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=rEUcrmsA92vKXWOMa9gjkZircoRHtwh2NGzh46Ym; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/labels + metadata: + groupName: Labels + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Labels' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=uOfOzJMa5lIhRnkxrSV7W6Lh6At2caeav8pgRq3i; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/14.yaml b/.scribe/endpoints/14.yaml new file mode 100644 index 000000000000..279f70889fd5 --- /dev/null +++ b/.scribe/endpoints/14.yaml @@ -0,0 +1,576 @@ +name: Licenses +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/licenses/selectlist + metadata: + groupName: Licenses + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: Selectlist + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=WCUA668q64Tb6nEAAMH6QDj0KxiWwfnKfCVC1WL5; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/licenses + metadata: + groupName: Licenses + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Licenses' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + status: + name: status + description: 'Filter by license status. Options: active, inactive, expiring' + required: false + example: '?status=active' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + company_id: + name: company_id + description: 'Filter by exact company ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + name: + name: name + description: 'Filter by exact license name.' + required: false + example: 'Microsoft 365' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + product_key: + name: product_key + description: 'Filter by exact product key.' + required: false + example: W269N + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + order_number: + name: order_number + description: 'Filter by exact order number.' + required: false + example: '12345' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + purchase_order: + name: purchase_order + description: 'Filter by exact purchase order.' + required: false + example: PO12345 + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + license_name: + name: license_name + description: 'Filter by exact licensee name.' + required: false + example: 'John Doe' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + license_email: + name: license_email + description: 'Filter by exact licensee email.' + required: false + example: john.d + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + status: '?status=active' + company_id: 1 + name: 'Microsoft 365' + product_key: W269N + order_number: '12345' + purchase_order: PO12345 + license_name: 'John Doe' + license_email: john.d + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=FsSfFEzLbFI2oqcTFwXV523YHYRteVgVbhwU1KjU; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/licenses + metadata: + groupName: Licenses + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create License' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/licenses/{license_id}' + metadata: + groupName: Licenses + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show License' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + license_id: + name: license_id + description: 'The ID of the license.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + license_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=fr7kJMaaASq4b53DwioCqOIG1A7k7COxiBsYFjXL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/licenses/{license_id}' + metadata: + groupName: Licenses + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update License' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + license_id: + name: license_id + description: 'The ID of the license.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + license_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/licenses/{license_id}' + metadata: + groupName: Licenses + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete License' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + license_id: + name: license_id + description: 'The ID of the license.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + license_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/licenses/{license_id}/seats' + metadata: + groupName: Licenses + groupDescription: '' + subgroup: 'License Seats' + subgroupDescription: '' + title: 'List License Seats' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + license_id: + name: license_id + description: 'The ID of the license.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + license_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=StfngPkbKXNpOhusZSc3gJVfFrY1dHeurAa4otwt; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/licenses/{license_id}/seats/{id}' + metadata: + groupName: Licenses + groupDescription: '' + subgroup: 'License Seats' + subgroupDescription: '' + title: 'Show License Seat' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + license_id: + name: license_id + description: 'The ID of the license.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + id: + name: id + description: 'The ID of the seat.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + license_id: 1 + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=4NcQjrTDkyy5Ps1lwLlvwwkW8zLNdvkt4jLniAbj; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/licenses/{license_id}/seats/{id}' + metadata: + groupName: Licenses + groupDescription: '' + subgroup: 'License Seats' + subgroupDescription: '' + title: 'Update License Seat' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + license_id: + name: license_id + description: 'The ID of the license.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + id: + name: id + description: 'The ID of the seat.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + license_id: 1 + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/15.yaml b/.scribe/endpoints/15.yaml new file mode 100644 index 000000000000..a71b2ee819d5 --- /dev/null +++ b/.scribe/endpoints/15.yaml @@ -0,0 +1,644 @@ +name: Locations +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/locations/selectlist + metadata: + groupName: Locations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Gets a paginated collection for the select2 menus' + description: |- + This is handled slightly differently as of ~4.7.8-pre, as + we have to do some recursive magic to get the hierarchy to display + properly when looking at the parent/child relationship in the + rich menus. + + This means we can't use the normal pagination that we use elsewhere + in our selectlists, since we have to get the full set before we can + determine which location is parent/child/grandchild, etc. + + This also means that hierarchy display gets a little funky when people + use the Select2 search functionality, but there's not much we can do about + that right now. + + As a result, instead of paginating as part of the query, we have to grab + the entire data set, and then invoke a paginator manually and pass that + through to the SelectListTransformer. + + Many thanks to @uberbrady for the help getting this working better. + Recursion still sucks, but I guess he doesn't have to get in the + sea... this time. + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=UpVwalXoUKqNpdc1JZOoxLIbtfuGTDjmXv2FL0U4; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/locations/{location_id}/assets' + metadata: + groupName: Locations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Assets with Default Location' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + location_id: + name: location_id + description: 'The ID of the location.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + location_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=s6eLrXoHfx9aHRHsGokhuXGIfcWMyMK6s8Y7CuQb; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/locations/{location_id}/assigned/assets' + metadata: + groupName: Locations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Assets Assigned to Location' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + location_id: + name: location_id + description: 'The ID of the location.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + location_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=6IjNjFVBRoxfcpk3lgt97JCcwcwkJ18MblUUArEa; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/locations/{location_id}/assigned/accessories' + metadata: + groupName: Locations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Accessories Assigned to Location' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + location_id: + name: location_id + description: 'The ID of the location.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + location_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=8QVLWPz9VFdTVM9oelFsOvXEnefwKOeIuos7D23G; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/locations + metadata: + groupName: Locations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Locations' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + search: + name: search + description: 'Search term to filter results.' + required: false + example: Headquarters + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + name: + name: name + description: 'Filter by exact location name.' + required: false + example: Headquarters + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + address: + name: address + description: 'Filter by exact address.' + required: false + example: '123 Main St' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + address2: + name: address2 + description: 'Filter by exact address2.' + required: false + example: 'Suite 100' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + city: + name: city + description: 'Filter by exact city.' + required: false + example: Springfield + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + zip: + name: zip + description: 'Filter by exact zip code.' + required: false + example: '12345' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + country: + name: country + description: 'Filter by exact country.' + required: false + example: USA + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + manager_id: + name: manager_id + description: 'Filter by exact manager (user) ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + company_id: + name: company_id + description: 'Filter by exact company ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + parent_id: + name: parent_id + description: 'Filter by exact parent location ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + status: + name: status + description: 'Filter by location status. Allowed values: active, deleted.' + required: false + example: active + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + sort: + name: sort + description: 'Column to sort results by. Allowed values: accessorries_count, address, address2, assets_count, assigned_assets_count, rtd_assets_count, accessories_count, assigned_accessories_count, components_count, consumables_count, users_count, children_count, city, country, created_at, currency, id, image, ldap_ou, company_id, manager_id, name, rtd_assets_count, state, updated_at, zip. Default: created_at.' + required: false + example: name + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + order: + name: order + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + required: false + example: asc + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + search: Headquarters + name: Headquarters + address: '123 Main St' + address2: 'Suite 100' + city: Springfield + zip: '12345' + country: USA + manager_id: 1 + company_id: 1 + parent_id: 1 + status: active + sort: name + order: asc + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=OrGO92pRr2bN1MO0HEk74EaOyIBpyNWW8nBBM9w1; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/locations + metadata: + groupName: Locations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Location' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/locations/{id}' + metadata: + groupName: Locations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Location' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the location.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=r40jhYlCjVborgeetW7XFFJzC3FPckbK3wiqaq9b; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/locations/{id}' + metadata: + groupName: Locations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Location' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the location.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/locations/{id}' + metadata: + groupName: Locations + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Location' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the location.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/16.yaml b/.scribe/endpoints/16.yaml new file mode 100644 index 000000000000..bb9bb0a60912 --- /dev/null +++ b/.scribe/endpoints/16.yaml @@ -0,0 +1,462 @@ +name: Manufacturers +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/manufacturers/selectlist + metadata: + groupName: Manufacturers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: Selectlist + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=wsdZCoP7veaDGNxSgmEVyiIXMCynDJaplPtmclKS; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/manufacturers/{id}/restore' + metadata: + groupName: Manufacturers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Restore Deleted Manufacturer' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the manufacturer.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/manufacturers + metadata: + groupName: Manufacturers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Manufacturers' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + search: + name: search + description: 'Search term to filter results.' + required: false + example: Dell + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + name: + name: name + description: 'Filter by exact manufacturer name.' + required: false + example: Dell + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + url: + name: url + description: 'Filter by exact URL.' + required: false + example: 'http://example.com' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + support_url: + name: support_url + description: 'Filter by exact support URL.' + required: false + example: 'http://support.example.com' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + warranty_lookup_url: + name: warranty_lookup_url + description: 'Filter by exact warranty lookup URL.' + required: false + example: 'http://warranty.example.com' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + support_phone: + name: support_phone + description: 'Filter by exact support phone number.' + required: false + example: 1-800-555-5555 + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + support_email: + name: support_email + description: 'Filter by exact support email address.' + required: false + example: support@example.org + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + sort: + name: sort + description: 'Column to sort results by. Allowed values: id, name, url, support_url, support_email, warranty_lookup_url, support_phone, created_at, updated_at, assets_count, consumables_count, components_count, licenses_count. Default: created_at.' + required: false + example: name + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + order: + name: order + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + required: false + example: asc + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + offset: + name: offset + description: 'Offset/starting position of the results. Default: 0.' + required: false + example: 0 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + limit: + name: limit + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + required: false + example: 50 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + search: Dell + name: Dell + url: 'http://example.com' + support_url: 'http://support.example.com' + warranty_lookup_url: 'http://warranty.example.com' + support_phone: 1-800-555-5555 + support_email: support@example.org + sort: name + order: asc + offset: 0 + limit: 50 + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=hLpuGgLKlkZ3lxAdCVVQh6AknrP7V8ucHP12iJyL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/manufacturers + metadata: + groupName: Manufacturers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Maintenance' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/manufacturers/{id}' + metadata: + groupName: Manufacturers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Manufacturer' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the manufacturer.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=AihyA0pGOpolpeaHgVkhwxZ48ZIGlH5C4cWn2ky1; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/manufacturers/{id}' + metadata: + groupName: Manufacturers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Manufacturer' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the manufacturer.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/manufacturers/{id}' + metadata: + groupName: Manufacturers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Manufacturer' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the manufacturer.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/17.yaml b/.scribe/endpoints/17.yaml new file mode 100644 index 000000000000..bcd8764e507c --- /dev/null +++ b/.scribe/endpoints/17.yaml @@ -0,0 +1,357 @@ +name: Models +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/models/selectlist + metadata: + groupName: Models + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Selectlist of Models' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=jwtFIyYGPRatDfntlAj40jo0O4Sj0FCnKi976PR2; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/models/assets + metadata: + groupName: Models + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Assets in Model' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the model.' + required: true + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 16 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=nvMGTR69fETV88dw8dfKSbREZAJ66IYQUUNSpf7Y; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/models + metadata: + groupName: Models + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Models' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=QArLWCify7SZSmEfdwLa8MuiE73ySbcjczNWAP5t; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/models + metadata: + groupName: Models + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Model' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/models/{id}' + metadata: + groupName: Models + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Model' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the model.' + required: true + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 16 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=Fi7bcrWvfZzmZFbGKAT0DPwaht8G2vkcbjoJPdZ1; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/models/{id}' + metadata: + groupName: Models + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Model' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the model.' + required: true + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 16 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/models/{id}' + metadata: + groupName: Models + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Model' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the model.' + required: true + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 16 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/18.yaml b/.scribe/endpoints/18.yaml new file mode 100644 index 000000000000..12fc33bd9102 --- /dev/null +++ b/.scribe/endpoints/18.yaml @@ -0,0 +1,117 @@ +name: Notes +description: '' +endpoints: + - + httpMethods: + - POST + uri: 'api/v1/notes/{asset_id}/store' + metadata: + groupName: Notes + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: 'Store Note' + description: |- + Checks authorization for updating assets, validates the presence of the 'note', + attempts to find the asset by ID, and creates a new ActionLog entry if successful. + Returns JSON responses indicating success or failure with appropriate HTTP status codes. + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/notes/{asset_id}/index' + metadata: + groupName: Notes + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: 'List Notes' + description: |- + Checks authorization to view assets, attempts to find the asset by ID, + and fetches related action log entries of type 'note added', including + user information for each note. Returns a JSON response with the notes or errors. + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + asset_id: + name: asset_id + description: 'The ID of the asset.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + asset_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=0996I9pgG6hTiplyAUfm6hARQqlLp2KcZRKbrsM4; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/19.yaml b/.scribe/endpoints/19.yaml new file mode 100644 index 000000000000..48f076957018 --- /dev/null +++ b/.scribe/endpoints/19.yaml @@ -0,0 +1,398 @@ +name: Settings +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/settings/ldaptest + metadata: + groupName: Settings + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Test LDAP Connection' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=sXQmK1seBet712r1kd4fxKvJ8eS1G5JIQGi7Jk76; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/settings/purge_barcodes + metadata: + groupName: Settings + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Barcode Cache' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/settings/login-attempts + metadata: + groupName: Settings + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Get a list of login attempts' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=3WvRIFmkRUjvmDyyocP7gGkeVA8nsKCstMlpD2ll; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/settings/ldaptestlogin + metadata: + groupName: Settings + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Test LDAP Login' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + ldaptest_user: + name: ldaptest_user + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + ldaptest_password: + name: ldaptest_password + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + ldaptest_user: architecto + ldaptest_password: architecto + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/settings/mailtest + metadata: + groupName: Settings + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Test Email Configuration' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/settings/backups + metadata: + groupName: Settings + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Lists backup files' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=c1LnO2y90g9cXIQdH1B3ALRTwBznlJR0MPn7UYwI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/settings/backups/download/latest + metadata: + groupName: Settings + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Determines and downloads the latest backup' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=h8vmsBd9n2ThBnox919dPAo17WMNdGSmFDgmUWbJ; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/settings/backups/download/{file}' + metadata: + groupName: Settings + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Downloads a backup file.' + description: |- + We use response()->download() here instead of Storage::download() because Storage::download() + exhausts memory on larger files. + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + file: + name: file + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + file: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=dEPJObU3yZeyRQ0ZNZQmLDg70DDH6mt8OLUoXk7b; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/20.yaml b/.scribe/endpoints/20.yaml new file mode 100644 index 000000000000..1c75fa6041eb --- /dev/null +++ b/.scribe/endpoints/20.yaml @@ -0,0 +1,539 @@ +name: 'Status Labels' +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/statuslabels/selectlist + metadata: + groupName: 'Status Labels' + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: Selectlist + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=wkMPeN6kxHTgcy7pBWCmBb2skYp7Ozxo03ll2QRI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/statuslabels/assets/name + metadata: + groupName: 'Status Labels' + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: 'Show Count for Pie Chart' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=BwSbIkmBBnKEl1eHDB5irvFrSmdOermismgPqdVt; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/statuslabels/assets/type + metadata: + groupName: 'Status Labels' + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: 'Show Count for Pie Chart by Meta Status' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=qgDpluENzw06DYesVDJ62VPNypFZR7TMXA5YuERD; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/statuslabels/{id}/assetlist' + metadata: + groupName: 'Status Labels' + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: 'Show Assets with Status Label' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the statuslabel.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=prHwFCnHCRfbaQBGGsb9zl9HAqpNQVahgTzOn5TU; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/statuslabels/{statuslabel}/deployable' + metadata: + groupName: 'Status Labels' + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: 'Check for Deployable Status' + description: |- + Returns a boolean response based on whether the status label + is one that is deployable or pending. + + This is used by the hardware create/edit view to determine whether + we should provide a dropdown of users for them to check the asset out to, + and whether we show a warning that the asset will be checked in if it's already + assigned but the status is changed to one that isn't pending or deployable + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + statuslabel: + name: statuslabel + description: 'The statuslabel.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + statuslabel: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=gGlaRILsVZF4fEWWem29LTEhtwQLJo5jRgFzetFi; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/statuslabels + metadata: + groupName: 'Status Labels' + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: 'Show Status Labels' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + search: + name: search + description: 'Search term to filter results.' + required: false + example: Inventory + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + search: Inventory + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=wZlTwk63tGu1kRBFJuzb8R1UY1k0ZU2YI5NAAZt8; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/statuslabels + metadata: + groupName: 'Status Labels' + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: 'Store a newly created resource in storage.' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/statuslabels/{id}' + metadata: + groupName: 'Status Labels' + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: 'Show Status Labels' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the statuslabel.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=BoPls7yDoCtaubgDPfK5nEabHin9oYkJpg9vZT3b; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/statuslabels/{id}' + metadata: + groupName: 'Status Labels' + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: 'Update Status Label' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the statuslabel.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/statuslabels/{id}' + metadata: + groupName: 'Status Labels' + groupDescription: '' + subgroup: Assets + subgroupDescription: '' + title: 'Delete Status Label' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the statuslabel.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/21.yaml b/.scribe/endpoints/21.yaml new file mode 100644 index 000000000000..3e6e656aef78 --- /dev/null +++ b/.scribe/endpoints/21.yaml @@ -0,0 +1,482 @@ +name: Suppliers +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/suppliers/selectlist + metadata: + groupName: Suppliers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: Selectlist + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=XCddlMqcqKqWUTBwJenBf996h9VUAuQn9onGzMNw; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/suppliers + metadata: + groupName: Suppliers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Suppliers' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + search: + name: search + description: 'Search term to filter results.' + required: false + example: Acme + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + name: + name: name + description: 'Filter by exact supplier name.' + required: false + example: 'Acme Corp' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + address: + name: address + description: 'Filter by exact address.' + required: false + example: '123 Main St' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + address2: + name: address2 + description: 'Filter by exact address2.' + required: false + example: 'Suite 100' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + city: + name: city + description: 'Filter by exact city.' + required: false + example: Springfield + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + state: + name: state + description: 'Filter by exact state.' + required: false + example: IL + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + zip: + name: zip + description: 'Filter by exact zip code.' + required: false + example: '62701' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + country: + name: country + description: 'Filter by exact country.' + required: false + example: USA + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + phone: + name: phone + description: 'Filter by exact phone number.' + required: false + example: 555-1234 + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + fax: + name: fax + description: 'Filter by exact fax number.' + required: false + example: 555-5678 + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + email: + name: email + description: 'Filter by exact email address.' + required: false + example: info@example.org + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + url: + name: url + description: 'Filter by exact URL.' + required: false + example: 'http://example.com' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + notes: + name: notes + description: 'Filter by exact notes.' + required: false + example: 'This is a note.' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + sort: + name: sort + description: 'Column to sort results by. Allowed values: id, name, address, address2, city, state, country, zip, phone, contact, fax, email, image, assets_count, licenses_count, accessories_count, components_count, consumables_count, url, notes. Default: created_at.' + required: false + example: name + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + order: + name: order + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + required: false + example: asc + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + offset: + name: offset + description: 'Offset/starting position of the results. Default: 0.' + required: false + example: 0 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + limit: + name: limit + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + required: false + example: 50 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + search: Acme + name: 'Acme Corp' + address: '123 Main St' + address2: 'Suite 100' + city: Springfield + state: IL + zip: '62701' + country: USA + phone: 555-1234 + fax: 555-5678 + email: info@example.org + url: 'http://example.com' + notes: 'This is a note.' + sort: name + order: asc + offset: 0 + limit: 50 + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=R5PUii8mbVR2t8EyWTQHM80dstDyhZxcQR15nKb7; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/suppliers + metadata: + groupName: Suppliers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Supplier' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/suppliers/{id}' + metadata: + groupName: Suppliers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Supplier' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the supplier.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=aqFNCFcjAl7hMG1Q0RCnYmK7HTNWcq0kYhd1R9NN; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/suppliers/{id}' + metadata: + groupName: Suppliers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Supplier' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the supplier.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/suppliers/{id}' + metadata: + groupName: Suppliers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Supplier' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the supplier.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/22.yaml b/.scribe/endpoints/22.yaml new file mode 100644 index 000000000000..8a43b74ae8e1 --- /dev/null +++ b/.scribe/endpoints/22.yaml @@ -0,0 +1,1053 @@ +name: Users +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/users/selectlist + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: Selectlist + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=IZgqgS9tzB7Woi3wtkhrOVoQAjhOfyxkuDcPvkvg; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/users/ldapsync + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'LDAP Sync Users' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/users/two_factor_reset + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Reset Two-factor' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/users/me + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Get Current User Info' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=DdpSv89XUbxUQrWd91QsKhNPnl22poe1TgDO9OCx; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/users/{user_id}/eulas' + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'User EULAs' + description: 'Gets the lst of accepted EULAs for a user,' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + user_id: + name: user_id + description: 'The ID of the user.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + user_id: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=jvqTGWtV1aH3OTBKuSWap25Q3CbiBnuZeONwLBEc; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/users/{user}/assets' + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Assets Assigned to User' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + user: + name: user + description: 'The user.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + user: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=BTajd65gRG0olNCl96HmZp8natMFNGjMvOZInbII; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/users/{user}/email' + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Email Asset List to User' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + user: + name: user + description: 'The user.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + user: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/users/{user}/accessories' + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Accessories Assigned to User' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + user: + name: user + description: 'The user.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + user: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=dwRnv0ptfgrlzbYQmswhgKgXRySAxB0gpanmjDq9; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/users/{user}/licenses' + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Licenses Assigned to User' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + user: + name: user + description: 'The user.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + user: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=1kSYxtla0he5GDr5iKBHwxleDJnZrmZCNsr7DbNL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/users/{user}/restore' + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Restore User' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + user: + name: user + description: 'The user.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + user: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/v1/users + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Users' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + search: + name: search + description: 'Search term to filter results.' + required: false + example: John + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + filter: + name: filter + description: 'JSON object of key/value pairs to filter results. Allowed keys: last_name, first_name, display_name, email, jobtitle, username, employee_num, groups, activated, created_at, updated_at, two_factor_enrolled, two_factor_optin, last_login, assets_count, licenses_count, consumables_count, accessories_count, manages_users_count, manages_locations_count, phone, mobile, address, city, state, country, zip, id, ldap_import, remote, vip, start_date, end_date, autoassign_licenses, website, locale, notes.' + required: false + example: '{"last_name":"Doe","first_name":"John"}' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + activated: + name: activated + description: 'Filter by exact activation status. Allowed values: 0, 1.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + admins: + name: admins + description: 'Filter to only admin and superadmin users. Allowed values: true, false.' + required: false + example: true + type: boolean + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + superadmins: + name: superadmins + description: 'Filter to only superadmin users. Allowed values: true, false.' + required: false + example: true + type: boolean + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + company_id: + name: company_id + description: 'Filter by exact company ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + phone: + name: phone + description: 'Filter by exact phone number.' + required: false + example: 555-1234 + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + mobile: + name: mobile + description: 'Filter by exact mobile number.' + required: false + example: 555-5678 + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + location_id: + name: location_id + description: 'Filter by exact location ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + created_by: + name: created_by + description: 'Filter by exact user ID who created the user.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + email: + name: email + description: 'Filter by exact email address.' + required: false + example: jdoe@example.com + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + username: + name: username + description: 'Filter by exact username.' + required: false + example: jdoe + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + first_name: + name: first_name + description: 'Filter by exact first name.' + required: false + example: John + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + last_name: + name: last_name + description: 'Filter by exact last name.' + required: false + example: Doe + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + display_name: + name: display_name + description: 'Filter by exact display name.' + required: false + example: 'John Doe' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + employee_num: + name: employee_num + description: 'Filter by exact employee number.' + required: false + example: '12345' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + state: + name: state + description: 'Filter by exact state.' + required: false + example: CA + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + country: + name: country + description: 'Filter by exact country.' + required: false + example: USA + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + website: + name: website + description: 'Filter by exact website URL.' + required: false + example: 'https://example.com' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + zip: + name: zip + description: 'Filter by exact ZIP code.' + required: false + example: '90210' + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + group_id: + name: group_id + description: 'Filter by exact group ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + department_id: + name: department_id + description: 'Filter by exact department ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + manager_id: + name: manager_id + description: 'Filter by exact manager (user) ID.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + ldap_import: + name: ldap_import + description: 'Filter by exact LDAP import status. Allowed values: 0, 1.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + remote: + name: remote + description: 'Filter by exact remote status. Allowed values: 0, 1.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + vip: + name: vip + description: 'Filter by exact VIP status. Allowed values: 0, 1.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + two_factor_enrolled: + name: two_factor_enrolled + description: 'Filter by exact two-factor authentication enrollment status. Allowed values: 0, 1.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + search: John + filter: '{"last_name":"Doe","first_name":"John"}' + activated: 1 + admins: true + superadmins: true + company_id: 1 + phone: 555-1234 + mobile: 555-5678 + location_id: 1 + created_by: 1 + email: jdoe@example.com + username: jdoe + first_name: John + last_name: Doe + display_name: 'John Doe' + employee_num: '12345' + state: CA + country: USA + website: 'https://example.com' + zip: '90210' + group_id: 1 + department_id: 1 + manager_id: 1 + ldap_import: 1 + remote: 1 + vip: 1 + two_factor_enrolled: 1 + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=svMpBgCg8Lm5Jzhs2MsnXhIHryI0BbXg3iVzyJkL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/users + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create User' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/users/{id}' + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show User' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the user.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=UXj5Ks0zKIILl7fLIxnYGCgcKClmFZ1Nx8GEnqhC; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/users/{id}' + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update User' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the user.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/users/{id}' + metadata: + groupName: Users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete User' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the user.' + required: true + example: 2 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: 2 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/23.yaml b/.scribe/endpoints/23.yaml new file mode 100644 index 000000000000..e80c8ecf397c --- /dev/null +++ b/.scribe/endpoints/23.yaml @@ -0,0 +1,1117 @@ +name: 'Predefined Kits' +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/kits + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Kits' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=BSc46Rjyl24Ed0D3XweTOOmBl4ZRMjvkZT0P0LSQ; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/v1/kits + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Create Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/kits/{id}' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Show Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=0eyOqf0SJ6Slcj3wxf7abcmSncDyqjA8t0LitABZ; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + - PATCH + uri: 'api/v1/kits/{id}' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/kits/{id}' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/kits/{kit_id}/licenses' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Licenses in Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=RDCUVBV4hMi1OpBYln5l3IZ2PNZLexaBBBMcPiY3; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/kits/{kit_id}/licenses' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Add License to Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + license: + name: license + description: 'The ID of the license.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + quantity: + name: quantity + description: 'The quantity of the license.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanBodyParameters: + license: 1 + quantity: 1 + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/v1/kits/{kit_id}/licenses/{license_id}' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update License in Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + license_id: + name: license_id + description: 'The ID of the license.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + license_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/kits/{kit_id}/licenses/{license_id}' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Remove License from Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + license_id: + name: license_id + description: 'The ID of the license.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + license_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/kits/{kit_id}/models' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Models in Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=BdKhymmjrKjGS7HIhqlvLkChaxUPdHXJf1sntPCm; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/kits/{kit_id}/models' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Add Model to Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + model: + name: model + description: 'The ID of the model.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanBodyParameters: + model: 1 + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/kits/{kit_id}/accessories' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Accessories in Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=50xoUvlOlSVxg5nWSWhvNx9mDtVXWDyttn6Tdl13; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/kits/{kit_id}/accessories' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Add Accessory to Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + accessory: + name: accessory + description: 'The ID of the accessory.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + quantity: + name: quantity + description: 'The quantity of the accessory.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanBodyParameters: + accessory: 1 + quantity: 1 + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/v1/kits/{kit_id}/accessories/{accessory_id}' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Accessory in Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + accessory_id: + name: accessory_id + description: 'The ID of the accessory.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + accessory_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + quantity: + name: quantity + description: 'The quantity of the accessory.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanBodyParameters: + quantity: 1 + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/kits/{kit_id}/accessories/{accessory_id}' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Remove Accessory from Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + accessory_id: + name: accessory_id + description: 'The ID of the accessory.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + accessory_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/kits/{kit_id}/consumables' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Consumables in Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=Q2XcAI2qf8SWjOX7XDlr4BFa9PAeUgRBAaRStarB; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/kits/{kit_id}/consumables' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Add Consumable to Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + consumable: + name: consumable + description: 'The ID of the consumable.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + quantity: + name: quantity + description: 'The quantity of the consumable.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanBodyParameters: + consumable: 1 + quantity: 1 + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/v1/kits/{kit_id}/consumables/{consumable_id}' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Update Consumable in Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + consumable_id: + name: consumable_id + description: 'The ID of the consumable.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + consumable_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + quantity: + name: quantity + description: 'The quantity of the consumable.' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanBodyParameters: + quantity: 1 + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/kits/{kit_id}/consumables/{consumable_id}' + metadata: + groupName: 'Predefined Kits' + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Remove Consumable from Kit' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + kit_id: + name: kit_id + description: 'The ID of the kit.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + consumable_id: + name: consumable_id + description: 'The ID of the consumable.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanUrlParameters: + kit_id: 1 + consumable_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/24.yaml b/.scribe/endpoints/24.yaml new file mode 100644 index 000000000000..a0669cda30fd --- /dev/null +++ b/.scribe/endpoints/24.yaml @@ -0,0 +1,207 @@ +name: Reports +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/reports/activity + metadata: + groupName: Reports + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Activity Report' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: + search: + name: search + description: 'Search term to filter results' + required: false + example: updated + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + target_type: + name: target_type + description: 'Filter by target type' + required: false + example: user + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + target_id: + name: target_id + description: 'Filter by target ID' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + item_type: + name: item_type + description: 'Filter by item type' + required: false + example: asset + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + item_id: + name: item_id + description: 'Filter by item ID' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + action_type: + name: action_type + description: 'Filter by action type' + required: false + example: create + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + created_by: + name: created_by + description: 'Filter by user ID who created the log' + required: false + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + action_source: + name: action_source + description: 'Filter by action source' + required: false + example: web + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + remote_ip: + name: remote_ip + description: 'Filter by remote IP address Example:' + required: false + example: null + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + uploads: + name: uploads + description: 'Filter to only show logs with file uploads' + required: false + example: true + type: boolean + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + sort: + name: sort + description: 'Column to sort by. Allowed values: id, created_at, target_id, created_by, accept_signature, action_type, note, remote_ip, user_agent, target_type, item_type, action_source, action_date. Default is created_at.' + required: false + example: created_at + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + order: + name: order + description: 'Order of sorting. Allowed values: asc, desc. Default is desc.' + required: false + example: desc + type: string + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + offset: + name: offset + description: 'Number of records to skip for pagination. Default is 0.' + required: false + example: 0 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + limit: + name: limit + description: 'Maximum number of records to return. Default is 25.' + required: false + example: 25 + type: integer + enumValues: [] + exampleWasSpecified: true + nullable: false + custom: [] + cleanQueryParameters: + search: updated + target_type: user + target_id: 1 + item_type: asset + item_id: 1 + action_type: create + created_by: 1 + action_source: web + uploads: true + sort: created_at + order: desc + offset: 0 + limit: 25 + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=Q7c7iu2qi9Mil7UrdGdQhd5UHhMHwIs9J7wKxvhY; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/25.yaml b/.scribe/endpoints/25.yaml new file mode 100644 index 000000000000..c3b8b0d06667 --- /dev/null +++ b/.scribe/endpoints/25.yaml @@ -0,0 +1,54 @@ +name: Misc +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/v1/version + metadata: + groupName: Misc + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Version API routes' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=4opUPyEuZlodDlaWWG7JNFN7lCuHNMim1KxZHPur; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=719999; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/26.yaml b/.scribe/endpoints/26.yaml new file mode 100644 index 000000000000..91647f39a616 --- /dev/null +++ b/.scribe/endpoints/26.yaml @@ -0,0 +1,285 @@ +name: Files +description: '' +endpoints: + - + httpMethods: + - GET + uri: 'api/v1/{object_type}/{id}/files' + metadata: + groupName: Files + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'List Files for an Object' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + object_type: + name: object_type + description: '' + required: true + example: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + id: + name: id + description: 'The ID of the {object type}.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + object_type: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=HfR9HTwK8SuIGE2OuiaImTbUpBhp1HtUBHMeilHy; expires=Sat, 18 Oct 2025 20:42:53 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/v1/{object_type}/{id}/files/{file_id}' + metadata: + groupName: Files + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Display File' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + object_type: + name: object_type + description: '' + required: true + example: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + id: + name: id + description: 'The ID of the {object type}.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + file_id: + name: file_id + description: 'The ID of the file.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + object_type: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users + id: architecto + file_id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 401 + content: '{"error":"Unauthorized or unauthenticated."}' + headers: + cache-control: 'max-age=0, must-revalidate, no-cache, no-store, private' + content-type: application/json + vary: Origin + pragma: no-cache + expires: 'Sun, 02 Jan 1990 00:00:00 GMT' + x-content-type-options: nosniff + feature-policy: "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + referrer-policy: same-origin + content-security-policy: "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + set-cookie: 'snipe-dev_local=N688uqN5BWG2WKvT3v6TxAJAl1Il05lzaTycQ40x; expires=Sat, 18 Oct 2025 20:42:53 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax' + description: null + custom: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/v1/{object_type}/{id}/files' + metadata: + groupName: Files + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Upload File to an Object' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + object_type: + name: object_type + description: '' + required: true + example: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + id: + name: id + description: 'The ID of the {object type}.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + object_type: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users + id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/v1/{object_type}/{id}/files/{file_id}/delete' + metadata: + groupName: Files + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: 'Delete File' + description: '' + authenticated: true + deprecated: false + custom: [] + headers: + Authorization: 'Bearer 6g43cv8PD1aE5beadkZfhV6' + Content-Type: application/json + Accept: application/json + urlParameters: + object_type: + name: object_type + description: '' + required: true + example: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + id: + name: id + description: 'The ID of the {object type}.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + file_id: + name: file_id + description: 'The ID of the file.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + object_type: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users + id: architecto + file_id: architecto + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: + - headers + - Authorization + - 'Bearer 6g43cv8PD1aE5beadkZfhV6' + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/custom.0.yaml b/.scribe/endpoints/custom.0.yaml new file mode 100644 index 000000000000..4b0235215fdb --- /dev/null +++ b/.scribe/endpoints/custom.0.yaml @@ -0,0 +1,53 @@ +# To include an endpoint that isn't a part of your Laravel app (or belongs to a vendor package), +# you can define it in a custom.*.yaml file, like this one. +# Each custom file should contain an array of endpoints. Here's an example: +# See https://scribe.knuckles.wtf/laravel/documenting/custom-endpoints#extra-sorting-groups-in-custom-endpoint-files for more options + +#- httpMethods: +# - POST +# uri: api/doSomething/{param} +# metadata: +# groupName: The group the endpoint belongs to. Can be a new group or an existing group. +# groupDescription: A description for the group. You don't need to set this for every endpoint; once is enough. +# subgroup: You can add a subgroup, too. +# title: Do something +# description: 'This endpoint allows you to do something.' +# authenticated: false +# headers: +# Content-Type: application/json +# Accept: application/json +# urlParameters: +# param: +# name: param +# description: A URL param for no reason. +# required: true +# example: 2 +# type: integer +# queryParameters: +# speed: +# name: speed +# description: How fast the thing should be done. Can be `slow` or `fast`. +# required: false +# example: fast +# type: string +# bodyParameters: +# something: +# name: something +# description: The things we should do. +# required: true +# example: +# - string 1 +# - string 2 +# type: 'string[]' +# responses: +# - status: 200 +# description: 'When the thing was done smoothly.' +# content: # Your response content can be an object, an array, a string or empty. +# { +# "hey": "ho ho ho" +# } +# responseFields: +# hey: +# name: hey +# description: Who knows? +# type: string # This is optional diff --git a/.scribe/intro.md b/.scribe/intro.md new file mode 100644 index 000000000000..5a4e87a87108 --- /dev/null +++ b/.scribe/intro.md @@ -0,0 +1,11 @@ +# Introduction + +This documentation aims to provide the information you need to work with the Snipe-IT JSON REST API. + + + + + diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index d68418ce59d6..b9b7a7687fd5 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -94,7 +94,7 @@ public function render($request, Throwable $e) // Handle API requests that fail because Carbon cannot parse the date on validation (when a submitted date value is definitely not a date) if ($e instanceof InvalidFormatException) { - return response()->json(Helper::formatStandardApiResponse('error', null, trans('validation.date', ['attribute' => 'date'])), 200); + return response()->json(Helper::formatStandardApiResponse('error', null, trans('validation.date', ['attribute' => 'date'])), config('app.validation_status_code')); } // Handle API requests that fail because the model doesn't exist @@ -124,7 +124,7 @@ public function render($request, Throwable $e) // never even get to the controller where we normally nicely format JSON responses if ($e instanceof ValidationException) { $response = $this->invalidJson($request, $e); - return response()->json(Helper::formatStandardApiResponse('error', null, $e->errors()), 200); + return response()->json(Helper::formatStandardApiResponse('error', null, $e->errors()), config('app.validation_status_code')); } } @@ -198,7 +198,7 @@ protected function unauthenticated($request, AuthenticationException $exception) protected function invalidJson($request, ValidationException $exception) { - return response()->json(Helper::formatStandardApiResponse('error', null, $exception->errors()), 200); + return response()->json(Helper::formatStandardApiResponse('error', null, $exception->errors()), config('app.validation_status_code')); } diff --git a/app/Http/Controllers/Api/AccessoriesController.php b/app/Http/Controllers/Api/AccessoriesController.php index 3a198f1dd3cd..41fdea0e9a39 100644 --- a/app/Http/Controllers/Api/AccessoriesController.php +++ b/app/Http/Controllers/Api/AccessoriesController.php @@ -11,12 +11,9 @@ use App\Http\Transformers\AccessoriesTransformer; use App\Http\Transformers\SelectlistTransformer; use App\Models\Accessory; -use App\Models\Company; use App\Models\User; use Illuminate\Http\JsonResponse; -use Illuminate\Support\Facades\Auth; use Carbon\Carbon; -use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; use App\Models\AccessoryCheckout; @@ -26,11 +23,25 @@ class AccessoriesController extends Controller use CheckInOutRequest; /** - * Display a listing of the resource. + * List accessories + * + * @group Accessories + * @queryParam search string A search term to filter results by. Example: keyboard + * @queryParam filter[] string A field to filter by. Example + * @queryParam company_id int Filter by company ID. Example: 1 + * @queryParam category_id int Filter by category ID. Example: 1 + * @queryParam manufacturer_id int Filter by manufacturer ID. Example: 1 + * @queryParam supplier_id int Filter by supplier ID. Example: 1 + * @queryParam location_id int Filter by location ID. Example: 1 + * @queryParam notes string Filter by notes. Example: For office use only + * @queryParam offset int The number of items to skip before starting to collect the result set. Example: 0 + * @queryParam limit int The number of items to return. Example: 50 + * @queryParam sort string The field to sort by. Example: created_at + * @queryParam order string The order to sort by. Example: desc * - * @author [A. Gianotto] [] - * @since [v4.0] * @return \Illuminate\Http\Response + *@since [v4.0] + * @author [A. Gianotto] [] */ public function index(Request $request) { @@ -151,9 +162,13 @@ public function index(Request $request) /** - * Store a newly created resource in storage. + * Create Accessory * - * @param \App\Http\Requests\ImageUploadRequest $request + * @group Accessories + * @bodyParam name string required The name of the accessory. Example: Apple Bluetooth Keyboard + * @bodyParam qty int required The number of accessories to create. Example: 10 + * @bodyParam category_id int required The ID of the category to assign this accessory to. Example: 1 + * @bodyParam image file No-example * @return \Illuminate\Http\JsonResponse * @author [A. Gianotto] [] * @since [v4.0] @@ -173,8 +188,9 @@ public function store(StoreAccessoryRequest $request) } /** - * Display the specified resource. + * Show Accessory * + * @group Accessories * @param int $id * @return array * @author [A. Gianotto] [] @@ -189,26 +205,11 @@ public function show($id) } - /** - * Display the specified resource. - * - * @param int $id - * @return array - * @author [A. Gianotto] [] - * @since [v4.0] - */ - public function accessory_detail($id) - { - $this->authorize('view', Accessory::class); - $accessory = Accessory::findOrFail($id); - - return (new AccessoriesTransformer)->transformAccessory($accessory); - } - /** - * Get the list of checkouts for a specific accessory + * Show Accessory Checkouts * + * @group Accessories * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -238,8 +239,9 @@ public function checkedout(Request $request, $id) /** - * Update the specified resource in storage. + * Update accessory. * + * @group Accessories * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -261,8 +263,9 @@ public function update(ImageUploadRequest $request, $id) } /** - * Remove the specified resource from storage. + * Delete Accessory * + * @group Accessories * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -285,11 +288,12 @@ public function destroy($id) /** - * Save the Accessory checkout information. + * Checkout Accessory * * If Slack is enabled and/or asset acceptance is enabled, it will also * trigger a Slack message and send an email. * + * @group Accessories * @param int $accessoryId * @return \Illuminate\Http\JsonResponse * @author [A. Gianotto] [] @@ -332,8 +336,9 @@ public function checkout(AccessoryCheckoutRequest $request, Accessory $accessory } /** - * Check in the item so that it can be checked out again to someone else + * Checkin Accessory * + * @group Accessories * @param Request $request * @param int $accessoryUserId * @param string $backto @@ -375,8 +380,10 @@ public function checkin(Request $request, $accessoryUserId = null) /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Accessories + * @queryParam search string A search term to filter results by name. No-example * @see \App\Http\Transformers\SelectlistTransformer * */ diff --git a/app/Http/Controllers/Api/AssetModelsController.php b/app/Http/Controllers/Api/AssetModelsController.php index d0a6ceba5b91..b8b48b7b1afd 100644 --- a/app/Http/Controllers/Api/AssetModelsController.php +++ b/app/Http/Controllers/Api/AssetModelsController.php @@ -25,8 +25,9 @@ class AssetModelsController extends Controller { /** - * Display a listing of the resource. + * List Models * + * @group Models * @author [A. Gianotto] [] * @since [v4.0] */ @@ -172,8 +173,9 @@ public function index(Request $request) : JsonResponse | array /** - * Store a newly created resource in storage. + * Create Model * + * @group Models * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\StoreAssetModelRequest $request @@ -194,11 +196,12 @@ public function store(StoreAssetModelRequest $request) : JsonResponse } /** - * Display the specified resource. + * Show Model * + * @group Models + * @urlParam id int required The ID of the model. * @author [A. Gianotto] [] * @since [v4.0] - * @param int $id */ public function show($id) : array { @@ -209,11 +212,13 @@ public function show($id) : array } /** - * Display the specified resource's assets + * List Assets in Model * + * @group Models + * @urlParam id int required The ID of the model. * @author [A. Gianotto] [] * @since [v4.0] - * @param int $id + * */ public function assets($id) : array { @@ -225,12 +230,12 @@ public function assets($id) : array /** - * Update the specified resource in storage. + * Update Model * + * @group Models + * @urlParam id int required The ID of the model. * @author [A. Gianotto] [] * @since [v4.0] - * @param \App\Http\Requests\ImageUploadRequest $request - * @param int $id * @return \Illuminate\Http\Response */ public function update(StoreAssetModelRequest $request, $id) : JsonResponse @@ -261,11 +266,12 @@ public function update(StoreAssetModelRequest $request, $id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Model * + * @group Models * @author [A. Gianotto] [] * @since [v4.0] - * @param int $id + * @urlParam id int required The ID of the model. */ public function destroy($id) : JsonResponse { @@ -291,8 +297,9 @@ public function destroy($id) : JsonResponse } /** - * Gets a paginated collection for the select2 menus + * Selectlist of Models * + * @group Models * @author [A. Gianotto] [] * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 1a34e3f62fc8..396ce6d12af2 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -50,10 +50,32 @@ class AssetsController extends Controller use MigratesLegacyAssetLocations; /** - * Returns JSON listing of all assets + * List Assets * + * @group Assets + * @queryParam action string The action to filter by: audits, checkins. No-example + * @queryParam upcoming_status string The status to filter by: `due`, `overdue`, `due-or-overdue`. No-example + * @queryParam status string The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`. No-example + * @queryParam status_id int The asset status ID to filter by. No-example + * @queryParam asset_tag string The asset tag to filter by. No-example + * @queryParam serial string The serial number to filter by. No-example + * @queryParam requestable boolean Filter by requestable assets. No-example + * @queryParam model_id int The model ID or IDs to filter by. No-example + * @queryParam category_id int The category ID to filter by. No-example + * @queryParam location_id int The location ID to filter by. No-example + * @queryParam rtd_location_id int The RTD location ID to filter by. No-example + * @queryParam supplier_id int The supplier ID to filter by. No-example + * @queryParam asset_eol_date date The asset end-of-life date to filter by. No-example + * @queryParam assigned_to int The user ID or department ID the asset is assigned to. No-example + * @queryParam assigned_type string The type of assignment, either 'user' or 'asset' or 'location'. Example: user + * @queryParam company_id int The company ID to filter by. No-example + * @queryParam manufacturer_id int The manufacturer ID to filter by. No-example + * @queryParam depreciation_id int The depreciation ID to filter by. No-example + * @queryParam byod boolean Filter by BYOD assets. Example: true + * @queryParam order_number string The order number to filter by. Example: No-example + * @queryParam search string A text string to search for. Example: No-example + * @queryParam filter string A JSON object of key/value pairs to filter by. No-example * @author [A. Gianotto] [] - * @param int $assetId * @since [v4.0] */ public function index(Request $request, $action = null, $upcoming_status = null) : JsonResponse | array @@ -475,9 +497,10 @@ public function index(Request $request, $action = null, $upcoming_status = null) /** - * Returns JSON with information about an asset (by tag) for detail view. + * Lookup by Tag * - * @param string $tag + * @group Assets + * @urlParam $tag string required The asset tag. Example: 1 * @since [v4.2.1] * @author [A. Gianotto] [] */ @@ -510,10 +533,11 @@ public function showByTag(Request $request, $tag): JsonResponse | array } /** - * Returns JSON with information about an asset (by serial) for detail view. + * Lookup by Serial * + * @group Assets * @author [A. Gianotto] [] - * @param string $serial + * @urlParam $serial string * @since [v4.2.1] * @return \Illuminate\Http\JsonResponse */ @@ -553,10 +577,11 @@ public function showBySerial(Request $request, $serial): JsonResponse | array } /** - * Returns JSON with information about an asset for detail view. + * Show Asset * + * @group Assets * @author [A. Gianotto] [] - * @param int $assetId + * @queryParam $assetId int required The asset ID. Example: 1 * @since [v4.0] * @return \Illuminate\Http\JsonResponse */ @@ -573,6 +598,13 @@ public function show(Request $request, $id): JsonResponse | array return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200); } + /** + * Licenses Assigned to Asset + * + * @group Assets + * @queryParam $assetId int required The asset ID. Example: 1 + * @return \Illuminate\Http\JsonResponse + */ public function licenses(Request $request, $id): array { $this->authorize('view', Asset::class); @@ -585,8 +617,12 @@ public function licenses(Request $request, $id): array /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Assets + * @queryParam $search string String to search on. No-example + * @queryParam $companyId int Company ID to filter by. No-example + * @queryParam $assetStatusType string The asset status type to filter by: `RTD`. No-example * @author [A. Gianotto] [] * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer @@ -644,8 +680,9 @@ public function selectlist(Request $request): array /** - * Accepts a POST request to create a new asset + * Create Asset * + * @group Assets * @author [A. Gianotto] [] * @param \App\Http\Requests\ImageUploadRequest $request * @since [v4.0] @@ -739,8 +776,15 @@ public function store(StoreAssetRequest $request): JsonResponse /** - * Accepts a POST request to update an asset + * Update Asset * + * @group Assets + * @queryParam model_id int The model ID to associate the asset with. Example: 1 + * @queryParam company_id int The company ID to associate the asset with. Example: 1 + * @queryParam rtd_location_id int The RTD location ID to associate the asset with. Example: 1 + * @queryParam last_audit_date date The last audit date for the asset. Example: 2023-12-31 + * @queryParam image file The image file to upload for the asset. Example: (binary) + * @param \App\Http\Requests\UpdateAssetRequest $request * @author [A. Gianotto] [] * @since [v4.0] */ @@ -831,8 +875,10 @@ public function update(UpdateAssetRequest $request, Asset $asset): JsonResponse /** - * Delete a given asset (mark as deleted). + * Delete Asset * + * @group Assets + * @param int $id * @author [A. Gianotto] [] * @param int $assetId * @since [v4.0] @@ -866,8 +912,9 @@ public function destroy($id): JsonResponse /** - * Restore a soft-deleted asset. + * Restore Asset * + * @group Assets * @author [A. Gianotto] [] * @param int $assetId * @since [v5.1.18] @@ -894,8 +941,9 @@ public function restore(Request $request, $assetId = null): JsonResponse } /** - * Checkout an asset by its tag. + * Checkout by Asset Tag * + * @group Assets * @author [N. Butler] * @param string $tag * @since [v6.0.5] @@ -909,8 +957,9 @@ public function checkoutByTag(AssetCheckoutRequest $request, $tag): JsonResponse } /** - * Checkout an asset + * Checkout Asset * + * @group Assets * @author [A. Gianotto] [] * @param int $assetId * @since [v4.0] @@ -984,8 +1033,9 @@ public function checkout(AssetCheckoutRequest $request, $asset_id): JsonResponse /** - * Checkin an asset + * Checkin Asset * + * @group Assets * @author [A. Gianotto] [] * @param int $assetId * @since [v4.0] @@ -1069,8 +1119,9 @@ function (Builder $query) use ($asset) { } /** - * Checkin an asset by asset tag + * Checkin by Asset Tag * + * @group Assets * @author [A. Janes] [] * @since [v6.0] */ @@ -1093,8 +1144,9 @@ public function checkinByTag(Request $request, $tag = null): JsonResponse /** - * Mark an asset as audited + * Audit Asset * + * @group Assets * @author [A. Gianotto] [] * @param int $id * @since [v4.0] @@ -1218,8 +1270,9 @@ public function audit(Request $request, Asset $asset): JsonResponse /** - * Returns JSON listing of all requestable assets + * Show Requestable Assets * + * @group Assets * @author [A. Gianotto] [] * @since [v4.0] */ @@ -1306,6 +1359,11 @@ public function requestable(Request $request): JsonResponse | array } + /** + * List Assets Assigned to Asset + * + * @group Assets + */ public function assignedAssets(Request $request, Asset $asset) : JsonResponse | array { $this->authorize('view', Asset::class); @@ -1323,6 +1381,11 @@ public function assignedAssets(Request $request, Asset $asset) : JsonResponse | return (new AssetsTransformer)->transformAssets($assets, $total); } + /** + * List Accessories Assigned to Asset + * + * @group Assets + */ public function assignedAccessories(Request $request, Asset $asset) : JsonResponse | array { $this->authorize('view', Asset::class); @@ -1340,6 +1403,11 @@ public function assignedAccessories(Request $request, Asset $asset) : JsonRespon return (new AssetsTransformer)->transformCheckedoutAccessories($accessory_checkouts, $total); } + /** + * List Components Assigned to Asset + * + * @group Assets + */ public function assignedComponents(Request $request, Asset $asset): JsonResponse|array { $this->authorize('view', Asset::class); @@ -1354,10 +1422,10 @@ public function assignedComponents(Request $request, Asset $asset): JsonResponse } /** - * Generate asset labels by tag - * + * Generate Label by Asset Tag + * + * @group Assets * @author [Nebelkreis] [https://github.com/NebelKreis] - * * @param Request $request Contains asset_tags array of asset tags to generate labels for * @return JsonResponse Returns base64 encoded PDF on success, error message on failure */ diff --git a/app/Http/Controllers/Api/CategoriesController.php b/app/Http/Controllers/Api/CategoriesController.php index de923e3c8890..f42a9414150d 100644 --- a/app/Http/Controllers/Api/CategoriesController.php +++ b/app/Http/Controllers/Api/CategoriesController.php @@ -15,8 +15,9 @@ class CategoriesController extends Controller { /** - * Display a listing of the resource. + * List Categories * + * @group Categories * @author [A. Gianotto] [] * @since [v4.0] * @return \Illuminate\Http\Response @@ -148,8 +149,9 @@ public function index(Request $request) : array /** - * Store a newly created resource in storage. + * Create Category * + * @group Categories * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -171,8 +173,9 @@ public function store(ImageUploadRequest $request) : JsonResponse } /** - * Display the specified resource. + * Show Category * + * @group Categories * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -187,8 +190,9 @@ public function show($id) : array /** - * Update the specified resource in storage. + * Update Category * + * @group Categories * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -217,8 +221,9 @@ public function update(ImageUploadRequest $request, $id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Category * + * @group Categories * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -241,8 +246,9 @@ public function destroy($id) : JsonResponse /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Categories * @author [A. Gianotto] [] * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer diff --git a/app/Http/Controllers/Api/CheckoutRequest.php b/app/Http/Controllers/Api/CheckoutRequest.php index 9b66531ae40c..24fc5c2a0a59 100644 --- a/app/Http/Controllers/Api/CheckoutRequest.php +++ b/app/Http/Controllers/Api/CheckoutRequest.php @@ -14,6 +14,11 @@ class CheckoutRequest extends Controller { + /** + * Store Asset Request + * + * @group Account + */ public function store(Asset $asset): JsonResponse { try { @@ -29,6 +34,11 @@ public function store(Asset $asset): JsonResponse } } + /** + * Cancel Asset Request + * + * @group Account + */ public function destroy(Asset $asset): JsonResponse { try { diff --git a/app/Http/Controllers/Api/CompaniesController.php b/app/Http/Controllers/Api/CompaniesController.php index aee38301f428..ab6ca66e97ad 100644 --- a/app/Http/Controllers/Api/CompaniesController.php +++ b/app/Http/Controllers/Api/CompaniesController.php @@ -15,8 +15,9 @@ class CompaniesController extends Controller { /** - * Display a listing of the resource. + * List Companies * + * @group Companies * @author [A. Gianotto] [] * @since [v4.0] */ @@ -90,11 +91,12 @@ public function index(Request $request) : JsonResponse | array /** - * Store a newly created resource in storage. + * Create Company * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Companies * @param \App\Http\Requests\ImageUploadRequest $request + *@since [v4.0] + * @author [A. Gianotto] [] */ public function store(ImageUploadRequest $request) : JsonResponse { @@ -112,11 +114,12 @@ public function store(ImageUploadRequest $request) : JsonResponse } /** - * Display the specified resource. + * Show Company * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Companies * @param int $id + * @since [v4.0] + * @author [A. Gianotto] [] */ public function show($id) : array { @@ -129,12 +132,13 @@ public function show($id) : array /** - * Update the specified resource in storage. + * Update Company * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Companies * @param \App\Http\Requests\ImageUploadRequest $request * @param int $id + *@author [A. Gianotto] [] + * @since [v4.0] */ public function update(ImageUploadRequest $request, $id) : JsonResponse { @@ -154,11 +158,12 @@ public function update(ImageUploadRequest $request, $id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Company * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Companies * @param int $id + * @since [v4.0] + * @author [A. Gianotto] [] */ public function destroy($id) : JsonResponse { @@ -177,8 +182,9 @@ public function destroy($id) : JsonResponse } /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Companies * @author [A. Gianotto] [] * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer diff --git a/app/Http/Controllers/Api/ComponentsController.php b/app/Http/Controllers/Api/ComponentsController.php index 57bd6fe589dd..457203ffbfd9 100644 --- a/app/Http/Controllers/Api/ComponentsController.php +++ b/app/Http/Controllers/Api/ComponentsController.php @@ -20,8 +20,9 @@ class ComponentsController extends Controller { /** - * Display a listing of the resource. + * List Categories * + * @group Components * @author [A. Gianotto] [] * @since [v4.0] * @@ -151,8 +152,9 @@ public function index(Request $request) : JsonResponse | array /** - * Store a newly created resource in storage. + * Create Component * + * @group Components * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -172,8 +174,9 @@ public function store(ImageUploadRequest $request) : JsonResponse } /** - * Display the specified resource. + * Show Component * + * @group Components * @author [A. Gianotto] [] * @param int $id */ @@ -188,8 +191,9 @@ public function show($id) : array } /** - * Update the specified resource in storage. + * Update Component * + * @group Components * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -211,8 +215,9 @@ public function update(ImageUploadRequest $request, $id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Component * + * @group Components * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -233,8 +238,9 @@ public function destroy($id) : JsonResponse } /** - * Display all assets attached to a component + * Component Assets * + * @group Components * @author [A. Bergamasco] [@vjandrea] * @since [v4.0] * @param Request $request @@ -274,10 +280,10 @@ public function getAssets(Request $request, $id) : array /** - * Validate and checkout the component. + * Checkout Component * + * @group Components * @author [A. Gianotto] [] - * t * @since [v5.1.8] * @param Request $request * @param int $componentId @@ -329,8 +335,9 @@ public function checkout(Request $request, $componentId) : JsonResponse } /** - * Validate and store checkin data. + * Checkin Component * + * @group Components * @author [A. Gianotto] [] * @since [v5.1.8] * @param Request $request diff --git a/app/Http/Controllers/Api/ConsumablesController.php b/app/Http/Controllers/Api/ConsumablesController.php index 7191b0b94abc..5736dc22996f 100644 --- a/app/Http/Controllers/Api/ConsumablesController.php +++ b/app/Http/Controllers/Api/ConsumablesController.php @@ -19,8 +19,21 @@ class ConsumablesController extends Controller { /** - * Display a listing of the resource. + * List Consumables * + * @group Consumables + * @queryParam filter string A JSON encoded array of key/value pairs to filter results by. Example: {"company":"1","location":"2"} + * @queryParam search string A search term to filter results by. + * @queryParam name string Filter by exact name. + * @queryParam company_id integer Filter by exact company ID. + * @queryParam category_id integer Filter by exact category ID. + * @queryParam model_number string Filter by exact model number. + * @queryParam manufacturer_id integer Filter by exact manufacturer ID. + * @queryParam supplier_id integer Filter by exact supplier ID. + * @queryParam location_id integer Filter by exact location ID. + * @queryParam notes string Filter by exact notes. + * @queryParam sort string The column to sort results by. Must be one of the following: id, name, order_number, min_amt, purchase_date, purchase_cost, company, category, model_number, item_no, manufacturer, location, qty, image, company, location, category, supplier, manufacturer. Default is created_at. + * @queryParam order string The order to sort results by. Must be one of the following: asc, desc. Default is desc. * @author [A. Gianotto] [] * @since [v4.0] */ @@ -153,6 +166,7 @@ public function index(Request $request) : array /** * Store a newly created resource in storage. * + * @group Consumables * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -172,8 +186,9 @@ public function store(StoreConsumableRequest $request) : JsonResponse } /** - * Display the specified resource. + * Show Consumable * + * @group Consumables * @author [A. Gianotto] [] * @param int $id */ @@ -186,8 +201,9 @@ public function show($id) : array } /** - * Update the specified resource in storage. + * Update Consumable * + * @group Consumables * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -208,8 +224,9 @@ public function update(StoreConsumableRequest $request, $id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Consumable * + * @group Consumables * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -225,8 +242,9 @@ public function destroy($id) : JsonResponse } /** - * Returns a JSON response containing details on the users associated with this consumable. + * User Assignments * + * @group Consumables * @author [A. Gianotto] [] * @see \App\Http\Controllers\Consumables\ConsumablesController::getView() method that returns the form. * @since [v1.0] @@ -272,8 +290,9 @@ public function getDataView($consumableId) : array } /** - * Checkout a consumable + * Checkout Consumable * + * @group Consumables * @author [A. Gutierrez] [] * @param int $id * @since [v4.9.5] @@ -334,8 +353,9 @@ public function checkout(Request $request, $id) : JsonResponse } /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Consumables * @see \App\Http\Transformers\SelectlistTransformer */ public function selectlist(Request $request) : array diff --git a/app/Http/Controllers/Api/CustomFieldsController.php b/app/Http/Controllers/Api/CustomFieldsController.php index 207a92e274f5..66116b177122 100644 --- a/app/Http/Controllers/Api/CustomFieldsController.php +++ b/app/Http/Controllers/Api/CustomFieldsController.php @@ -14,8 +14,9 @@ class CustomFieldsController extends Controller { /** - * Reorder the custom fields within a fieldset + * List Custom Fields * + * @group Custom Fields * @author [Brady Wetherington] [] * @param int $id * @since [v3.0] @@ -30,7 +31,9 @@ public function index() : array } /** - * Shows the given field + * Show Field + * + * @group Custom Fields * @author [V. Cordes] [] * @param int $id * @since [v4.1.10] @@ -46,8 +49,9 @@ public function show($id) : JsonResponse | array } /** - * Update the specified field + * Update Field * + * @group Custom Fields * @author [V. Cordes] [] * @since [v4.1.10] * @param \Illuminate\Http\Request $request @@ -80,8 +84,9 @@ public function update(Request $request, $id) : JsonResponse } /** - * Store a newly created field. + * Create Field * + * @group Custom Fields * @author [V. Cordes] [] * @since [v4.1.10] * @param \Illuminate\Http\Request $request @@ -112,6 +117,12 @@ public function store(Request $request) : JsonResponse return response()->json(Helper::formatStandardApiResponse('error', null, $field->getErrors())); } + /** + * Reorder Fields + * + * @group Custom Fields + * @param \Illuminate\Http\Request $request + */ public function postReorder(Request $request, $id) { $fieldset = CustomFieldset::find($id); @@ -134,6 +145,12 @@ public function postReorder(Request $request, $id) return $fieldset->fields()->sync($fields); } + /** + * Add Field to Fieldset + * + * @group Custom Fields + * @param \Illuminate\Http\Request $request + */ public function associate(Request $request, $field_id) : JsonResponse { $this->authorize('update', CustomFieldset::class); @@ -153,6 +170,12 @@ public function associate(Request $request, $field_id) : JsonResponse return response()->json(Helper::formatStandardApiResponse('success', $fieldset, trans('admin/custom_fields/message.fieldset.update.success'))); } + /** + * Remove Field from Fieldset + * + * @group Custom Fields + * @param \Illuminate\Http\Request $request + */ public function disassociate(Request $request, $field_id) : JsonResponse { $this->authorize('update', CustomFieldset::class); @@ -172,8 +195,9 @@ public function disassociate(Request $request, $field_id) : JsonResponse } /** - * Delete a custom field. + * Delete Field * + * @group Custom Fields * @author [Brady Wetherington] [] * @since [v1.8] */ diff --git a/app/Http/Controllers/Api/CustomFieldsetsController.php b/app/Http/Controllers/Api/CustomFieldsetsController.php index 5dbd507917a5..b52999583306 100644 --- a/app/Http/Controllers/Api/CustomFieldsetsController.php +++ b/app/Http/Controllers/Api/CustomFieldsetsController.php @@ -24,7 +24,10 @@ class CustomFieldsetsController extends Controller { /** - * Shows the given fieldset and its fields + * List Fieldsets + * + * @group Custom Fields + * @subgroup Custom Fieldsets * @author [A. Gianotto] [] * @author [Josh Gibson] * @param int $id @@ -39,10 +42,13 @@ public function index() : array } /** - * Shows the given fieldset and its fields - * @author [A. Gianotto] [] - * @author [Josh Gibson] + * Show Fieldset and Fields + * + * @group Custom Fields + * @subgroup Custom Fieldsets * @param int $id + * @author [Josh Gibson] + * @author [A. Gianotto] [] * @since [v1.8] */ public function show($id) : JsonResponse | array @@ -56,12 +62,14 @@ public function show($id) : JsonResponse | array } /** - * Update the specified resource in storage. + * Update Fieldset * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Custom Fields + * @subgroup Custom Fieldsets * @param \Illuminate\Http\Request $request * @param int $id + *@author [A. Gianotto] [] + * @since [v4.0] */ public function update(Request $request, $id) : JsonResponse { @@ -77,11 +85,13 @@ public function update(Request $request, $id) : JsonResponse } /** - * Store a newly created resource in storage. + * Create Fieldset * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Custom Fields + * @subgroup Custom Fieldsets * @param \Illuminate\Http\Request $request + *@since [v4.0] + * @author [A. Gianotto] [] */ public function store(Request $request) : JsonResponse { @@ -109,8 +119,10 @@ public function store(Request $request) : JsonResponse } /** - * Delete a custom fieldset. + * Delete Fieldset * + * @group Custom Fields + * @subgroup Custom Fieldsets * @author [A. Gianotto] [] * @since [v4.0] */ @@ -134,12 +146,14 @@ public function destroy($id) : JsonResponse } /** - * Return JSON containing a list of fields belonging to a fieldset. + * Show Fields in Fieldset * - * @author [V. Cordes] [] - * @since [v4.1.10] + * @group Custom Fields + * @subgroup Custom Fieldsets * @param $fieldsetId * @return string JSON + * @author [V. Cordes] [] + * @since [v4.1.10] */ public function fields($id) : array { @@ -151,9 +165,10 @@ public function fields($id) : array } /** - * Return JSON containing a list of fields belonging to a fieldset with the - * default values for a given model + * Fields in Fieldset with Default Values for Model * + * @group Custom Fields + * @subgroup Custom Fieldsets * @param $modelId * @param $fieldsetId * @return string JSON diff --git a/app/Http/Controllers/Api/DepartmentsController.php b/app/Http/Controllers/Api/DepartmentsController.php index 167d5cbc2af2..a2c465a1c0a0 100644 --- a/app/Http/Controllers/Api/DepartmentsController.php +++ b/app/Http/Controllers/Api/DepartmentsController.php @@ -15,8 +15,18 @@ class DepartmentsController extends Controller { /** - * Display a listing of the resource. + * List Departments * + * @group Departments + * @queryParam search string Search term to filter results. Example: IT + * @queryParam name string Filter by exact department name. Example: IT + * @queryParam company_id integer Filter by exact company ID. Example: 1 + * @queryParam manager_id integer Filter by exact manager (user) ID. Example: + * @queryParam location_id integer Filter by exact location ID. Example: 1 + * @queryParam sort string Column to sort results by. Allowed values: id, name, image, users_count, notes, created_at, updated_at, location, manager, company. Default: created_at. Example: name + * @queryParam order string Order of sorted results. Allowed values: asc, desc. Default: desc. Example: asc + * @queryParam offset integer Offset/starting position of the results. Default: 0. Example: 0 + * @queryParam limit integer Limit the number of results returned. Default: 25. Maximum: 100. Example: 50 * @author [Godfrey Martinez] [] * @since [v4.0] */ @@ -88,8 +98,9 @@ public function index(Request $request) : JsonResponse | array } /** - * Store a newly created resource in storage. + * Create Department * + * @group Departments * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -112,8 +123,9 @@ public function store(ImageUploadRequest $request) : JsonResponse } /** - * Display the specified resource. + * Show Department * + * @group Departments * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -126,8 +138,9 @@ public function show($id) : array } /** - * Update the specified resource in storage. + * Update Department * + * @group Departments * @author [A. Gianotto] [] * @since [v5.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -149,8 +162,9 @@ public function update(ImageUploadRequest $request, $id) : JsonResponse /** - * Validates and deletes selected department. + * Delete Department * + * @group Departments * @author [A. Gianotto] [] * @param int $locationId * @since [v4.0] @@ -171,8 +185,9 @@ public function destroy($id) : JsonResponse } /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Departments * @author [A. Gianotto] [] * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer diff --git a/app/Http/Controllers/Api/DepreciationsController.php b/app/Http/Controllers/Api/DepreciationsController.php index 254a72c98e26..ac3826cffa33 100644 --- a/app/Http/Controllers/Api/DepreciationsController.php +++ b/app/Http/Controllers/Api/DepreciationsController.php @@ -12,8 +12,9 @@ class DepreciationsController extends Controller { /** - * Display a listing of the resource. + * List Depreciations * + * @group Depreciations * @author [A. Gianotto] [] * @since [v4.0] */ @@ -65,8 +66,9 @@ public function index(Request $request) : JsonResponse | array } /** - * Store a newly created resource in storage. + * Create Depreciation * + * @group Depreciations * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request @@ -85,8 +87,9 @@ public function store(Request $request) : JsonResponse } /** - * Display the specified resource. + * Show Depreciation * + * @group Depreciations * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -100,8 +103,9 @@ public function show($id) : JsonResponse | array } /** - * Update the specified resource in storage. + * Update Depreciation * + * @group Depreciations * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request @@ -121,8 +125,9 @@ public function update(Request $request, $id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Depreciation * + * @group Depreciations * @author [A. Gianotto] [] * @since [v4.0] * @param int $id diff --git a/app/Http/Controllers/Api/GroupsController.php b/app/Http/Controllers/Api/GroupsController.php index 0f474ece8368..be35b7b5bd36 100644 --- a/app/Http/Controllers/Api/GroupsController.php +++ b/app/Http/Controllers/Api/GroupsController.php @@ -15,6 +15,7 @@ class GroupsController extends Controller /** * Display a listing of the resource. * + * @group User Groups * @author [A. Gianotto] [] * @since [v4.0] */ @@ -65,8 +66,9 @@ public function index(Request $request) : JsonResponse | array } /** - * Store a newly created resource in storage. + * Create Group * + * @group User Groups * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request @@ -92,8 +94,9 @@ public function store(Request $request) : JsonResponse } /** - * Display the specified resource. + * Show Group * + * @group User Groups * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -106,8 +109,9 @@ public function show($id) : array } /** - * Update the specified resource in storage. + * Update Group * + * @group User Groups * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request @@ -132,6 +136,7 @@ public function update(Request $request, $id) : JsonResponse /** * Remove the specified resource from storage. * + * @group User Groups * @author [A. Gianotto] [] * @since [v4.0] * @param int $id diff --git a/app/Http/Controllers/Api/ImportController.php b/app/Http/Controllers/Api/ImportController.php index 69703770f3ef..75ddbe44095b 100644 --- a/app/Http/Controllers/Api/ImportController.php +++ b/app/Http/Controllers/Api/ImportController.php @@ -24,8 +24,9 @@ class ImportController extends Controller { /** - * Display a listing of the resource. + * List Import Files * + * @group Imports */ public function index() : JsonResponse | array { @@ -35,8 +36,9 @@ public function index() : JsonResponse | array } /** - * Process and store a CSV upload file. + * Save Import File * + * @group Imports * @param \Illuminate\Http\Request $request */ public function store() : JsonResponse @@ -184,8 +186,9 @@ public function store() : JsonResponse } /** - * Processes the specified Import. + * Process Import * + * @group Imports * @param int $import_id */ public function process(ItemImportRequest $request, $import_id) : JsonResponse @@ -255,8 +258,9 @@ public function process(ItemImportRequest $request, $import_id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Import File * + * @group Imports * @param int $import_id */ public function destroy($import_id) : JsonResponse diff --git a/app/Http/Controllers/Api/LabelsController.php b/app/Http/Controllers/Api/LabelsController.php index 0b542354224d..9cf2bbab37f0 100644 --- a/app/Http/Controllers/Api/LabelsController.php +++ b/app/Http/Controllers/Api/LabelsController.php @@ -13,8 +13,9 @@ class LabelsController extends Controller { /** - * Returns JSON listing of all labels. + * List Labels * + * @group Labels * @author Grant Le Roux */ public function index(Request $request) : JsonResponse | array @@ -45,8 +46,9 @@ public function index(Request $request) : JsonResponse | array } /** - * Returns JSON with information about a label for detail view. + * Show Label * + * @group Labels * @author Grant Le Roux * @param string $labelName */ diff --git a/app/Http/Controllers/Api/LicenseSeatsController.php b/app/Http/Controllers/Api/LicenseSeatsController.php index 247f71ff2624..004f32058d39 100644 --- a/app/Http/Controllers/Api/LicenseSeatsController.php +++ b/app/Http/Controllers/Api/LicenseSeatsController.php @@ -15,8 +15,10 @@ class LicenseSeatsController extends Controller { /** - * Display a listing of the resource. + * List License Seats * + * @group Licenses + * @subgroup License Seats * @param \Illuminate\Http\Request $request * @param int $licenseId */ @@ -68,8 +70,10 @@ public function index(Request $request, $licenseId) : JsonResponse | array } /** - * Display the specified resource. + * Show License Seat * + * @group Licenses + * @subgroup License Seats * @param int $licenseId * @param int $seatId */ @@ -91,8 +95,10 @@ public function show($licenseId, $seatId) : JsonResponse | array } /** - * Update the specified resource in storage. + * Update License Seat * + * @group Licenses + * @subgroup License Seats * @param \Illuminate\Http\Request $request * @param int $licenseId * @param int $seatId diff --git a/app/Http/Controllers/Api/LicensesController.php b/app/Http/Controllers/Api/LicensesController.php index 738311b52baa..f68b6f7136a4 100644 --- a/app/Http/Controllers/Api/LicensesController.php +++ b/app/Http/Controllers/Api/LicensesController.php @@ -15,8 +15,17 @@ class LicensesController extends Controller { /** - * Display a listing of the resource. + * List Licenses * + * @group Licenses + * @queryParam status string Filter by license status. Options: active, inactive, expiring Example: ?status=active + * @queryParam company_id integer Filter by exact company ID. Example: 1 + * @queryParam name string Filter by exact license name. Example: Microsoft 365 + * @queryParam product_key string Filter by exact product key. Example: W269N + * @queryParam order_number string Filter by exact order number. Example: 12345 + * @queryParam purchase_order string Filter by exact purchase order. Example: PO12345 + * @queryParam license_name string Filter by exact licensee name. Example: John Doe + * @queryParam license_email string Filter by exact licensee email. Example: john.d * @author [A. Gianotto] [] * @since [v4.0] * @@ -166,8 +175,9 @@ public function index(Request $request) : JsonResponse | array } /** - * Store a newly created resource in storage. + * Create License * + * @group Licenses * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request @@ -186,8 +196,9 @@ public function store(Request $request) : JsonResponse } /** - * Display the specified resource. + * Show License * + * @group Licenses * @author [A. Gianotto] [] * @param int $id */ @@ -201,8 +212,9 @@ public function show($id) : JsonResponse | array } /** - * Update the specified resource in storage. + * Update License * + * @group Licenses * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request @@ -224,8 +236,9 @@ public function update(Request $request, $id) : JsonResponse | array } /** - * Remove the specified resource from storage. + * Delete License * + * @group Licenses * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -253,8 +266,9 @@ public function destroy($id) : JsonResponse } /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Licenses * @see \App\Http\Transformers\SelectlistTransformer */ public function selectlist(Request $request) : array diff --git a/app/Http/Controllers/Api/LocationsController.php b/app/Http/Controllers/Api/LocationsController.php index 3038cfcf0be5..c97b990161a9 100644 --- a/app/Http/Controllers/Api/LocationsController.php +++ b/app/Http/Controllers/Api/LocationsController.php @@ -23,11 +23,26 @@ class LocationsController extends Controller { /** - * Display a listing of the resource. + * List Locations + * + * @group Locations + * @queryParam search string Search term to filter results. Example: Headquarters + * @queryParam name string Filter by exact location name. Example: Headquarters + * @queryParam address string Filter by exact address. Example: 123 Main St + * @queryParam address2 string Filter by exact address2. Example: Suite 100 + * @queryParam city string Filter by exact city. Example: Springfield + * @queryParam zip string Filter by exact zip code. Example: 12345 + * @queryParam country string Filter by exact country. Example: USA + * @queryParam manager_id integer Filter by exact manager (user) ID. Example: 1 + * @queryParam company_id integer Filter by exact company ID. Example: 1 + * @queryParam parent_id integer Filter by exact parent location ID. Example: 1 + * @queryParam status string Filter by location status. Allowed values: active, deleted. Example: active + * @queryParam sort string Column to sort results by. Allowed values: accessorries_count, address, address2, assets_count, assigned_assets_count, rtd_assets_count, accessories_count, assigned_accessories_count, components_count, consumables_count, users_count, children_count, city, country, created_at, currency, id, image, ldap_ou, company_id, manager_id, name, rtd_assets_count, state, updated_at, zip. Default: created_at. Example: name + * @queryParam order string Order of sorted results. Allowed values: asc, desc. Default: desc. Example: asc * - * @author [A. Gianotto] [] - * @since [v4.0] * @return \Illuminate\Http\Response + * @since [v4.0] + * @author [A. Gianotto] [] */ public function index(Request $request) : JsonResponse | array { @@ -152,8 +167,6 @@ public function index(Request $request) : JsonResponse | array $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; $sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at'; - - switch ($request->input('sort')) { case 'parent': $locations->OrderParent($order); @@ -178,8 +191,9 @@ public function index(Request $request) : JsonResponse | array /** - * Store a newly created resource in storage. + * Create Location * + * @group Locations * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -208,8 +222,9 @@ public function store(ImageUploadRequest $request) : JsonResponse } /** - * Display the specified resource. + * Show Location * + * @group Locations * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -252,8 +267,9 @@ public function show($id) : JsonResponse | array /** - * Update the specified resource in storage. + * Update Location * + * @group Locations * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -295,7 +311,13 @@ public function update(ImageUploadRequest $request, $id) : JsonResponse return response()->json(Helper::formatStandardApiResponse('error', null, $location->getErrors())); } - + /** + * Show Assets with Default Location + * + * @group Locations + * @author [A. Gianotto] [] + * @param int $id + */ public function assets(Request $request, Location $location) : JsonResponse | array { $this->authorize('view', Asset::class); @@ -305,6 +327,13 @@ public function assets(Request $request, Location $location) : JsonResponse | ar return (new AssetsTransformer)->transformAssets($assets, $assets->count(), $request); } + /** + * Show Assets Assigned to Location + * + * @group Locations + * @author [A. Gianotto] [] + * @param int $id + */ public function assignedAssets(Request $request, Location $location) : JsonResponse | array { $this->authorize('view', Asset::class); @@ -314,6 +343,13 @@ public function assignedAssets(Request $request, Location $location) : JsonRespo return (new AssetsTransformer)->transformAssets($assets, $assets->count(), $request); } + /** + * Show Accessories Assigned to Location + * + * @group Locations + * @author [A. Gianotto] [] + * @param int $id + */ public function assignedAccessories(Request $request, Location $location) : JsonResponse | array { $this->authorize('view', Accessory::class); @@ -329,8 +365,9 @@ public function assignedAccessories(Request $request, Location $location) : Json } /** - * Remove the specified resource from storage. + * Delete Location * + * @group Locations * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -384,6 +421,7 @@ public function destroy($id) : JsonResponse * Recursion still sucks, but I guess he doesn't have to get in the * sea... this time. * + * @group Locations * @author [A. Gianotto] [] * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer diff --git a/app/Http/Controllers/Api/MaintenancesController.php b/app/Http/Controllers/Api/MaintenancesController.php index 319a7b0b1869..39a89bd3857e 100644 --- a/app/Http/Controllers/Api/MaintenancesController.php +++ b/app/Http/Controllers/Api/MaintenancesController.php @@ -22,8 +22,19 @@ class MaintenancesController extends Controller { /** - * Generates the JSON response for asset maintenances listing view. + * List Maintenances * + * @group Maintenances + * @queryParam search string Search term to filter results. Example: repair + * @queryParam asset_id integer Filter by exact asset ID. Example: 1 + * @queryParam supplier_id integer Filter by exact supplier ID. Example: 1 + * @queryParam created_by integer Filter by exact user ID who created the maintenance. Example + * @queryParam url string Filter by exact URL. Example: http://example.com + * @queryParam asset_maintenance_type string Filter by exact maintenance type. Example: repair + * @queryParam sort string Column to sort results by. Allowed values: id, name, asset_maintenance_time, asset_maintenance_type, cost, start_date, completion_date, notes, asset_tag, asset_name, serial, created_by, supplier, location, is_warranty, status_label. Default: created_at. Example: name + * @queryParam order string Order of sorted results. Allowed values: asc, desc. Default: desc. Example: asc + * @queryParam offset integer Offset/starting position of the results. Default: 0. Example: 0 + * @queryParam limit integer Limit the number of results returned. Default: 25. Maximum: 100. Example: 50 * @see MaintenancesController::getIndex() method that generates view * @author Vincent Sposato * @version v1.0 @@ -123,8 +134,9 @@ public function index(Request $request) : JsonResponse | array /** - * Validates and stores the new asset maintenance + * Create Maintenance * + * @group Maintenances * @see MaintenancesController::getCreate() method for the form * @author Vincent Sposato * @version v1.0 @@ -150,8 +162,9 @@ public function store(ImageUploadRequest $request) : JsonResponse | array } /** - * Validates and stores an update to an asset maintenance + * Update Maintenance * + * @group Maintenances * @author A. Gianotto * @param int $id * @param int $request @@ -188,8 +201,9 @@ public function update(Request $request, $id) : JsonResponse | array } /** - * Delete an asset maintenance + * Delete Maintenance * + * @group Maintenances * @author A. Gianotto * @param int $maintenanceId * @version v1.0 @@ -210,8 +224,9 @@ public function destroy($maintenanceId) : JsonResponse | array } /** - * View an asset maintenance + * View Maintenance * + * @group Maintenances * @author A. Gianotto * @param int $maintenanceId * @version v1.0 diff --git a/app/Http/Controllers/Api/ManufacturersController.php b/app/Http/Controllers/Api/ManufacturersController.php index 652fad1cfc6b..faaf113c6dd2 100644 --- a/app/Http/Controllers/Api/ManufacturersController.php +++ b/app/Http/Controllers/Api/ManufacturersController.php @@ -16,8 +16,20 @@ class ManufacturersController extends Controller { /** - * Display a listing of the resource. + * List Manufacturers * + * @group Manufacturers + * @queryParam search string Search term to filter results. Example: Dell + * @queryParam name string Filter by exact manufacturer name. Example: Dell + * @queryParam url string Filter by exact URL. Example: http://example.com + * @queryParam support_url string Filter by exact support URL. Example: http://support.example.com + * @queryParam warranty_lookup_url string Filter by exact warranty lookup URL. Example: http://warranty.example.com + * @queryParam support_phone string Filter by exact support phone number. Example: 1-800-555-5555 + * @queryParam support_email string Filter by exact support email address. Example: support@example.org + * @queryParam sort string Column to sort results by. Allowed values: id, name, url, support_url, support_email, warranty_lookup_url, support_phone, created_at, updated_at, assets_count, consumables_count, components_count, licenses_count. Default: created_at. Example: name + * @queryParam order string Order of sorted results. Allowed values: asc, desc. Default: desc. Example: asc + * @queryParam offset integer Offset/starting position of the results. Default: 0. Example: 0 + * @queryParam limit integer Limit the number of results returned. Default: 25. Maximum: 100. Example: 50 * @author [A. Gianotto] [] * @since [v4.0] * @return \Illuminate\Http\Response @@ -120,8 +132,9 @@ public function index(Request $request) : JsonResponse | array } /** - * Store a newly created resource in storage. + * Create Maintenance * + * @group Manufacturers * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -141,8 +154,9 @@ public function store(ImageUploadRequest $request) : JsonResponse } /** - * Display the specified resource. + * Show Manufacturer * + * @group Manufacturers * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -156,8 +170,9 @@ public function show($id) : JsonResponse | array } /** - * Update the specified resource in storage. + * Update Manufacturer * + * @group Manufacturers * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -178,8 +193,9 @@ public function update(ImageUploadRequest $request, $id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Manufacturer * + * @group Manufacturers * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -200,8 +216,9 @@ public function destroy($id) : JsonResponse } /** - * Restore a given Manufacturer (mark as un-deleted) + * Restore Deleted Manufacturer * + * @group Manufacturers * @author [A. Gianotto] [] * @since [v6.3.4] * @param int $id @@ -237,8 +254,9 @@ public function restore($id) : JsonResponse } /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Manufacturers * @author [A. Gianotto] [] * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer diff --git a/app/Http/Controllers/Api/NotesController.php b/app/Http/Controllers/Api/NotesController.php index c1a16fd4d658..3f4aebd5a390 100644 --- a/app/Http/Controllers/Api/NotesController.php +++ b/app/Http/Controllers/Api/NotesController.php @@ -19,12 +19,14 @@ class NotesController extends Controller { /** - * Retrieve a list of manual notes (action logs) for a given asset. + * List Notes * * Checks authorization to view assets, attempts to find the asset by ID, * and fetches related action log entries of type 'note added', including * user information for each note. Returns a JSON response with the notes or errors. * + * @group Notes + * @subgroup Assets * @param \Illuminate\Http\Request $request The incoming HTTP request. * @param Asset $asset The ID of the asset whose notes to retrieve. * @return \Illuminate\Http\JsonResponse @@ -59,12 +61,14 @@ public function index(Asset $asset): JsonResponse } /** - * Store a manual note on a specified asset and log the action. + * Store Note * * Checks authorization for updating assets, validates the presence of the 'note', * attempts to find the asset by ID, and creates a new ActionLog entry if successful. * Returns JSON responses indicating success or failure with appropriate HTTP status codes. * + * @group Notes + * @subgroup Assets * @param \Illuminate\Http\Request $request The incoming HTTP request containing the 'note'. * @param Asset $asset The ID of the asset to attach the note to. * @return \Illuminate\Http\JsonResponse diff --git a/app/Http/Controllers/Api/PredefinedKitsController.php b/app/Http/Controllers/Api/PredefinedKitsController.php index 24f132018508..7ccd007c8f17 100644 --- a/app/Http/Controllers/Api/PredefinedKitsController.php +++ b/app/Http/Controllers/Api/PredefinedKitsController.php @@ -16,8 +16,9 @@ class PredefinedKitsController extends Controller { /** - * Display a listing of the resource. + * List Kits * + * @group Predefined Kits * @return \Illuminate\Http\Response */ public function index(Request $request) : JsonResponse | array @@ -62,8 +63,9 @@ public function index(Request $request) : JsonResponse | array } /** - * Store a newly created resource in storage. + * Create Kit * + * @group Predefined Kits * @param \Illuminate\Http\Request $request */ public function store(Request $request) : JsonResponse @@ -80,9 +82,10 @@ public function store(Request $request) : JsonResponse } /** - * Display the specified resource. + * Show Kit * - * @param int $id + * @group Predefined Kits + * @urlParam $id int required The ID of the kit. Example: 1 */ public function show($id) : array { @@ -93,10 +96,10 @@ public function show($id) : array } /** - * Update the specified resource in storage. + * Update Kit * - * @param \Illuminate\Http\Request $request - * @param int $id kit id + * @group Predefined Kits + * @urlParam $id int required The ID of the kit. Example: 1 */ public function update(Request $request, $id) : JsonResponse { @@ -112,9 +115,10 @@ public function update(Request $request, $id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Kit * - * @param int $id + * @group Predefined Kits + * @urlParam $id int required The ID of the kit. Example: 1 */ public function destroy($id) : JsonResponse { @@ -133,8 +137,9 @@ public function destroy($id) : JsonResponse } /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Predefined Kits * @see \App\Http\Transformers\SelectlistTransformer */ public function selectlist(Request $request) : array @@ -154,9 +159,10 @@ public function selectlist(Request $request) : array } /** - * Display the specified resource. + * List Licenses in Kit * - * @param int $id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 * @return \Illuminate\Http\Response */ public function indexLicenses($kit_id) : array @@ -169,9 +175,12 @@ public function indexLicenses($kit_id) : array } /** - * Store the specified resource. + * Add License to Kit * - * @param int $id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @bodyParam license int required The ID of the license. Example: 1 + * @bodyParam quantity int The quantity of the license. Example: 1 * @return \Illuminate\Http\Response */ public function storeLicense(Request $request, $kit_id) : JsonResponse @@ -196,10 +205,11 @@ public function storeLicense(Request $request, $kit_id) : JsonResponse } /** - * Update the specified resource in storage. + * Update License in Kit * - * @param \Illuminate\Http\Request $request - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @urlParam $license_id int required The ID of the license. Example: 1 */ public function updateLicense(Request $request, $kit_id, $license_id) : JsonResponse { @@ -215,9 +225,11 @@ public function updateLicense(Request $request, $kit_id, $license_id) : JsonResp } /** - * Remove the specified resource from storage. + * Remove License from Kit * - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @urlParam $license_id int required The ID of the license. Example: 1 */ public function detachLicense($kit_id, $license_id) : JsonResponse { @@ -230,9 +242,10 @@ public function detachLicense($kit_id, $license_id) : JsonResponse } /** - * Display the specified resource. + * List Models in Kit * - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 */ public function indexModels($kit_id) : array { @@ -244,9 +257,11 @@ public function indexModels($kit_id) : array } /** - * Store the specified resource. + * Add Model to Kit * - * @param int $id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @bodyParam model int required The ID of the model. Example: 1 */ public function storeModel(Request $request, $kit_id) : JsonResponse { @@ -270,10 +285,11 @@ public function storeModel(Request $request, $kit_id) : JsonResponse } /** - * Update the specified resource in storage. + * Update Model in Kit * - * @param \Illuminate\Http\Request $request - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @bodyParam quantity int required The quantity of the model. Example: 1 */ public function updateModel(Request $request, $kit_id, $model_id) : JsonResponse { @@ -289,9 +305,11 @@ public function updateModel(Request $request, $kit_id, $model_id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Model from Kit * - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @urlParam $model_id int required The ID of the model. Example: 1 */ public function detachModel($kit_id, $model_id) : JsonResponse { @@ -304,9 +322,10 @@ public function detachModel($kit_id, $model_id) : JsonResponse } /** - * Display the specified resource. + * List Consumables in Kit * - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 */ public function indexConsumables($kit_id) : array { @@ -318,9 +337,12 @@ public function indexConsumables($kit_id) : array } /** - * Store the specified resource. + * Add Consumable to Kit * - * @param int $id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @bodyParam consumable int required The ID of the consumable. Example: 1 + * @bodyParam quantity int The quantity of the consumable. Example: 1 */ public function storeConsumable(Request $request, $kit_id) : JsonResponse { @@ -344,10 +366,12 @@ public function storeConsumable(Request $request, $kit_id) : JsonResponse } /** - * Update the specified resource in storage. + * Update Consumable in Kit * - * @param \Illuminate\Http\Request $request - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @urlParam $consumable_id int required The ID of the consumable. Example: 1 + * @bodyParam quantity int The quantity of the consumable. Example: 1 */ public function updateConsumable(Request $request, $kit_id, $consumable_id) : JsonResponse { @@ -363,9 +387,11 @@ public function updateConsumable(Request $request, $kit_id, $consumable_id) : Js } /** - * Remove the specified resource from storage. + * Remove Consumable from Kit * - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @urlParam $consumable_id int required The ID of the consumable. Example: 1 */ public function detachConsumable($kit_id, $consumable_id) : JsonResponse { @@ -378,9 +404,10 @@ public function detachConsumable($kit_id, $consumable_id) : JsonResponse } /** - * Display the specified resource. + * List Accessories in Kit * - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 */ public function indexAccessories($kit_id) : array { @@ -392,9 +419,12 @@ public function indexAccessories($kit_id) : array } /** - * Store the specified resource. + * Add Accessory to Kit * - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @bodyParam accessory int required The ID of the accessory. Example: 1 + * @bodyParam quantity int The quantity of the accessory. Example: 1 */ public function storeAccessory(Request $request, $kit_id) : JsonResponse { @@ -418,10 +448,12 @@ public function storeAccessory(Request $request, $kit_id) : JsonResponse } /** - * Update the specified resource in storage. + * Update Accessory in Kit * - * @param \Illuminate\Http\Request $request - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @urlParam $accessory_id int required The ID of the accessory. Example: 1 + * @bodyParam quantity int The quantity of the accessory. Example: 1 */ public function updateAccessory(Request $request, $kit_id, $accessory_id) : JsonResponse { @@ -437,9 +469,11 @@ public function updateAccessory(Request $request, $kit_id, $accessory_id) : Json } /** - * Remove the specified resource from storage. + * Remove Accessory from Kit * - * @param int $kit_id + * @group Predefined Kits + * @urlParam $kit_id int required The ID of the kit. Example: 1 + * @urlParam $accessory_id int required The ID of the accessory. Example: 1 */ public function detachAccessory($kit_id, $accessory_id) : JsonResponse { diff --git a/app/Http/Controllers/Api/ProfileController.php b/app/Http/Controllers/Api/ProfileController.php index 315c74a20d54..e7de327ff95a 100644 --- a/app/Http/Controllers/Api/ProfileController.php +++ b/app/Http/Controllers/Api/ProfileController.php @@ -42,8 +42,9 @@ public function __construct(TokenRepository $tokenRepository, ValidationFactory } /** - * Display a listing of requested assets. + * Display Requested Assets * + * @group Account * @author [A. Gianotto] [] * @since [v4.3.0] */ @@ -93,8 +94,8 @@ public function requestedAssets() : array /** - * Delete an API token - * + * Create API token + * @group Account * @author [A. Gianotto] [] * @since [v6.0.5] */ @@ -122,8 +123,9 @@ public function createApiToken(Request $request) : JsonResponse /** - * Delete an API token + * Delete API token * + * @group Account * @author [A. Gianotto] [] * @since [v6.0.5] */ @@ -150,8 +152,9 @@ public function deleteApiToken($tokenId) : Response /** - * Show user's API tokens + * Show API tokens * + * @group Account * @author [A. Gianotto] [] * @since [v6.0.5] */ @@ -172,11 +175,12 @@ public function showApiTokens() : JsonResponse } /** - * Display the EULAs accepted by the user. + * Display Accepted EULAs * - * @param \App\Http\Transformers\ActionlogsTransformer $transformer - * @return \Illuminate\Http\JsonResponse - *@since [v8.1.16] + * @group Account + * @param \App\Http\Transformers\ActionlogsTransformer $transformer + * @return \Illuminate\Http\JsonResponse + * @since [v8.1.16] * @author [Godfrey Martinez] [] */ public function eulas(ProfileTransformer $transformer) diff --git a/app/Http/Controllers/Api/ReportsController.php b/app/Http/Controllers/Api/ReportsController.php index c03dddf6b777..ce5a39f336be 100644 --- a/app/Http/Controllers/Api/ReportsController.php +++ b/app/Http/Controllers/Api/ReportsController.php @@ -13,8 +13,23 @@ class ReportsController extends Controller { /** - * Returns Activity Report JSON. + * Activity Report * + * @group Reports + * @queryParam search string Search term to filter results Example: updated + * @queryParam target_type string Filter by target type Example: user + * @queryParam target_id integer Filter by target ID Example: 1 + * @queryParam item_type string Filter by item type Example: asset + * @queryParam item_id integer Filter by item ID Example: 1 + * @queryParam action_type string Filter by action type Example: create + * @queryParam created_by integer Filter by user ID who created the log Example: 1 + * @queryParam action_source string Filter by action source Example: web + * @queryParam remote_ip string Filter by remote IP address Example: No-example + * @queryParam uploads boolean Filter to only show logs with file uploads Example: true + * @queryParam sort string Column to sort by. Allowed values: id, created_at, target_id, created_by, accept_signature, action_type, note, remote_ip, user_agent, target_type, item_type, action_source, action_date. Default is created_at. Example: created_at + * @queryParam order string Order of sorting. Allowed values: asc, desc. Default is desc. Example: desc + * @queryParam offset integer Number of records to skip for pagination. Default is 0. Example: 0 + * @queryParam limit integer Maximum number of records to return. Default is 25. Example: 25 * @author [A. Gianotto] [] * @since [v4.0] */ diff --git a/app/Http/Controllers/Api/SettingsController.php b/app/Http/Controllers/Api/SettingsController.php index f24dd25b1791..6f2094641458 100644 --- a/app/Http/Controllers/Api/SettingsController.php +++ b/app/Http/Controllers/Api/SettingsController.php @@ -23,6 +23,12 @@ class SettingsController extends Controller { + /** + * Test LDAP Connection + * + * @group Settings + * @return JsonResponse + */ public function ldaptest() : JsonResponse { $settings = Setting::getSettings(); @@ -95,6 +101,13 @@ public function ldaptest() : JsonResponse } + /** + * Test LDAP Login + * + * @group Settings + * @param Request $request + * @return JsonResponse + */ public function ldaptestlogin(Request $request) : JsonResponse { @@ -151,8 +164,9 @@ public function ldaptestlogin(Request $request) : JsonResponse } /** - * Test the email configuration + * Test Email Configuration * + * @group Settings * @author [A. Gianotto] [] * @since [v3.0] */ @@ -175,8 +189,9 @@ public function ajaxTestEmail() : JsonResponse /** - * Delete server-cached barcodes + * Delete Barcode Cache * + * @group Settings * @author [A. Gianotto] [] * @since [v5.0.0] */ @@ -216,6 +231,7 @@ public function purgeBarcodes() : JsonResponse /** * Get a list of login attempts * + * @group Settings * @author [A. Gianotto] [] * @since [v5.0.0] * @param \Illuminate\Http\Request $request @@ -239,6 +255,7 @@ public function showLoginAttempts(Request $request) : array /** * Lists backup files * + * @group Settings * @author [A. Gianotto] */ public function listBackups() : array @@ -279,9 +296,11 @@ public function listBackups() : array /** * Downloads a backup file. + * * We use response()->download() here instead of Storage::download() because Storage::download() * exhausts memory on larger files. * + * @group Settings * @author [A. Gianotto] */ public function downloadBackup($file) : JsonResponse | BinaryFileResponse @@ -301,6 +320,7 @@ public function downloadBackup($file) : JsonResponse | BinaryFileResponse /** * Determines and downloads the latest backup * + * @group Settings * @author [A. Gianotto] * @since [v6.3.1] */ diff --git a/app/Http/Controllers/Api/StatuslabelsController.php b/app/Http/Controllers/Api/StatuslabelsController.php index b3503ff15230..a05d70a4ba1a 100644 --- a/app/Http/Controllers/Api/StatuslabelsController.php +++ b/app/Http/Controllers/Api/StatuslabelsController.php @@ -17,7 +17,11 @@ class StatuslabelsController extends Controller { /** - * Display a listing of the resource. + * Show Status Labels + * + * @group Status Labels + * @subgroup Assets + * @queryParam search string Search term to filter results. Example: Inventory * * @author [A. Gianotto] [] * @since [v4.0] @@ -85,9 +89,11 @@ public function index(Request $request) : array /** * Store a newly created resource in storage. * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Status Labels + * @subgroup Assets * @param \Illuminate\Http\Request $request + *@since [v4.0] + * @author [A. Gianotto] [] */ public function store(Request $request) : JsonResponse { @@ -119,11 +125,13 @@ public function store(Request $request) : JsonResponse } /** - * Display the specified resource. + * Show Status Labels * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Status Labels + * @subgroup Assets * @param int $id + *@since [v4.0] + * @author [A. Gianotto] [] */ public function show($id) : array { @@ -135,12 +143,14 @@ public function show($id) : array /** - * Update the specified resource in storage. + * Update Status Label * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Status Labels + * @subgroup Assets * @param \Illuminate\Http\Request $request * @param int $id + *@author [A. Gianotto] [] + * @since [v4.0] */ public function update(Request $request, $id) : JsonResponse { @@ -172,11 +182,13 @@ public function update(Request $request, $id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Status Label * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Status Labels + * @subgroup Assets * @param int $id + *@since [v4.0] + * @author [A. Gianotto] [] */ public function destroy($id) : JsonResponse { @@ -197,8 +209,10 @@ public function destroy($id) : JsonResponse /** - * Show a count of assets by status label for pie chart + * Show Count for Pie Chart * + * @group Status Labels + * @subgroup Assets * @author [A. Gianotto] [] * @since [v3.0] */ @@ -229,8 +243,10 @@ public function getAssetCountByStatuslabel() : array } /** - * Show a count of assets by meta status type for pie chart + * Show Count for Pie Chart by Meta Status * + * @group Status Labels + * @subgroup Assets * @author [A. Gianotto] [] * @since [v6.0.11] */ @@ -257,11 +273,13 @@ public function getAssetCountByMetaStatus() : array } /** - * Display the specified resource. + * Show Assets with Status Label * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Status Labels + * @subgroup Assets * @param int $id + *@since [v4.0] + * @author [A. Gianotto] [] */ public function assets(Request $request, $id) : array { @@ -289,6 +307,8 @@ public function assets(Request $request, $id) : array /** + * Check for Deployable Status + * * Returns a boolean response based on whether the status label * is one that is deployable or pending. * @@ -296,7 +316,8 @@ public function assets(Request $request, $id) : array * we should provide a dropdown of users for them to check the asset out to, * and whether we show a warning that the asset will be checked in if it's already * assigned but the status is changed to one that isn't pending or deployable - * + * @group Status Labels + * @subgroup Assets * @author [A. Gianotto] [] * @since [v4.0] */ @@ -311,8 +332,10 @@ public function checkIfDeployable($id) : string } /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Status Labels + * @subgroup Assets * @author [A. Gianotto] [] * @since [v6.1.1] * @see \App\Http\Transformers\SelectlistTransformer diff --git a/app/Http/Controllers/Api/SuppliersController.php b/app/Http/Controllers/Api/SuppliersController.php index 6784ee82c16e..78eb5b0b9c5a 100644 --- a/app/Http/Controllers/Api/SuppliersController.php +++ b/app/Http/Controllers/Api/SuppliersController.php @@ -15,11 +15,30 @@ class SuppliersController extends Controller { /** - * Display a listing of the resource. + * List Suppliers * - * @author [A. Gianotto] [] - * @since [v4.0] + * @group Suppliers + * @queryParam search string Search term to filter results. Example: Acme + * @queryParam name string Filter by exact supplier name. Example: Acme Corp + * @queryParam address string Filter by exact address. Example: 123 Main St + * @queryParam address2 string Filter by exact address2. Example: Suite 100 + * @queryParam city string Filter by exact city. Example: Springfield + * @queryParam state string Filter by exact state. Example: IL + * @queryParam zip string Filter by exact zip code. Example: 62701 + * @queryParam country string Filter by exact country. Example: USA + * @queryParam phone string Filter by exact phone number. Example: 555-1234 + * @queryParam fax string Filter by exact fax number. Example: 555-5678 + * @queryParam email string Filter by exact email address. Example: info@example.org + * @queryParam url string Filter by exact URL. Example: http://example.com + * @queryParam notes string Filter by exact notes. Example: This is a note. + * @queryParam sort string Column to sort results by. Allowed values: id, name, address, address2, city, state, country, zip, phone, contact, fax, email, image, assets_count, licenses_count, accessories_count, components_count, consumables_count, url, notes. Default: created_at. Example: name + * @queryParam order string Order of sorted results. Allowed values: asc, desc. Default: desc. Example: asc + * @queryParam offset integer Offset/starting position of the results. Default: 0. Example: 0 + * @queryParam limit integer Limit the number of results returned. Default: 25. Maximum: 100. Example: 50 + * @see SuppliersController::getIndex() * @return \Illuminate\Http\Response + * @since [v4.0] + * @author [A. Gianotto] [] */ public function index(Request $request): array { @@ -126,8 +145,9 @@ public function index(Request $request): array /** - * Store a newly created resource in storage. + * Create Supplier * + * @group Suppliers * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -147,8 +167,9 @@ public function store(ImageUploadRequest $request) : JsonResponse } /** - * Display the specified resource. + * Show Supplier * + * @group Suppliers * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -163,8 +184,9 @@ public function show($id) : array /** - * Update the specified resource in storage. + * Update Supplier * + * @group Suppliers * @author [A. Gianotto] [] * @since [v4.0] * @param \App\Http\Requests\ImageUploadRequest $request @@ -185,8 +207,9 @@ public function update(ImageUploadRequest $request, $id) : JsonResponse } /** - * Remove the specified resource from storage. + * Delete Supplier * + * @group Suppliers * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -216,8 +239,9 @@ public function destroy($id) : JsonResponse } /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Suppliers * @author [A. Gianotto] [] * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer diff --git a/app/Http/Controllers/Api/UploadedFilesController.php b/app/Http/Controllers/Api/UploadedFilesController.php index c9be7058954d..23d7c70c169c 100644 --- a/app/Http/Controllers/Api/UploadedFilesController.php +++ b/app/Http/Controllers/Api/UploadedFilesController.php @@ -20,8 +20,9 @@ class UploadedFilesController extends Controller /** - * List files for an object + * List Files for an Object * + * @group Files * @param \App\Http\Requests\UploadFileRequest $request * @param string $object_type the type of object to upload the file to * @param int $id the ID of the object to list files for @@ -80,8 +81,9 @@ function ($query) use ($request) { /** - * Accepts a POST to upload a file to the server. + * Upload File to an Object * + * @group Files * @param \App\Http\Requests\UploadFileRequest $request * @param string $object_type the type of object to upload the file to * @param int $id the ID of the object to store so we can check permisisons @@ -128,8 +130,9 @@ public function store(UploadFileRequest $request, $object_type, $id) : JsonRespo /** - * Check for permissions and display the file. + * Display File * + * @group Files * @param \App\Http\Requests\UploadFileRequest $request * @param string $object_type the type of object to upload the file to * @param int $id the ID of the object to delete from so we can check permisisons @@ -171,8 +174,9 @@ public function show($object_type, $id, $file_id) : JsonResponse | StreamedRespo } /** - * Delete the associated file + * Delete File * + * @group Files * @param \App\Http\Requests\UploadFileRequest $request * @param string $object_type the type of object to upload the file to * @param int $id the ID of the object to delete from so we can check permisisons diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index e7896eeeb305..4471a75fffc5 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -35,8 +35,36 @@ class UsersController extends Controller { /** - * Display a listing of the resource. + * List Users * + * @group Users + * @queryParam search string Search term to filter results. Example: John + * @queryParam filter string JSON object of key/value pairs to filter results. Allowed keys: last_name, first_name, display_name, email, jobtitle, username, employee_num, groups, activated, created_at, updated_at, two_factor_enrolled, two_factor_optin, last_login, assets_count, licenses_count, consumables_count, accessories_count, manages_users_count, manages_locations_count, phone, mobile, address, city, state, country, zip, id, ldap_import, remote, vip, start_date, end_date, autoassign_licenses, website, locale, notes. Example: {"last_name":"Doe","first_name":"John"} + * @queryParam activated integer Filter by exact activation status. Allowed values: 0, 1. Example: 1 + * @queryParam admins boolean Filter to only admin and superadmin users. Allowed values: true, false. Example: true + * @queryParam superadmins boolean Filter to only superadmin users. Allowed values: true, false. Example: true + * @queryParam company_id integer Filter by exact company ID. Example: 1 + * @queryParam phone string Filter by exact phone number. Example: 555-1234 + * @queryParam mobile string Filter by exact mobile number. Example: 555-5678 + * @queryParam location_id integer Filter by exact location ID. Example: 1 + * @queryParam created_by integer Filter by exact user ID who created the user. Example: 1 + * @queryParam email string Filter by exact email address. Example: jdoe@example.com + * @queryParam username string Filter by exact username. Example: jdoe + * @queryParam first_name string Filter by exact first name. Example: John + * @queryParam last_name string Filter by exact last name. Example: Doe + * @queryParam display_name string Filter by exact display name. Example: John Doe + * @queryParam employee_num string Filter by exact employee number. Example: 12345 + * @queryParam state string Filter by exact state. Example: CA + * @queryParam country string Filter by exact country. Example: USA + * @queryParam website string Filter by exact website URL. Example: https://example.com + * @queryParam zip string Filter by exact ZIP code. Example: 90210 + * @queryParam group_id integer Filter by exact group ID. Example: 1 + * @queryParam department_id integer Filter by exact department ID. Example: 1 + * @queryParam manager_id integer Filter by exact manager (user) ID. Example: 1 + * @queryParam ldap_import integer Filter by exact LDAP import status. Allowed values: 0, 1. Example: 1 + * @queryParam remote integer Filter by exact remote status. Allowed values: 0, 1. Example: 1 + * @queryParam vip integer Filter by exact VIP status. Allowed values: 0, 1. Example: 1 + * @queryParam two_factor_enrolled integer Filter by exact two-factor authentication enrollment status. Allowed values: 0, 1. Example: 1 * @author [A. Gianotto] [] * @since [v4.0] * @@ -370,8 +398,9 @@ public function index(Request $request) : array } /** - * Gets a paginated collection for the select2 menus + * Selectlist * + * @group Users * @author [A. Gianotto] [] * @since [v4.0.16] * @see \App\Http\Transformers\SelectlistTransformer @@ -426,8 +455,9 @@ public function selectlist(Request $request) : array /** - * Store a newly created resource in storage. + * Create User * + * @group Users * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request @@ -485,8 +515,9 @@ public function store(SaveUserRequest $request) : JsonResponse } /** - * Display the specified resource. + * Show User * + * @group Users * @author [A. Gianotto] [] * @param int $id */ @@ -505,8 +536,9 @@ public function show($id) : JsonResponse | array /** - * Update the specified resource in storage. + * Update User * + * @group Users * @author [A. Gianotto] [] * @since [v4.0] * @param \Illuminate\Http\Request $request @@ -606,8 +638,9 @@ public function update(SaveUserRequest $request, User $user): JsonResponse } /** - * Remove the specified resource from storage. + * Delete User * + * @group Users * @author [A. Gianotto] [] * @since [v4.0] * @param int $id @@ -643,8 +676,9 @@ public function destroy(DeleteUserRequest $request, $id) : JsonResponse } /** - * Return JSON containing a list of assets assigned to a user. + * List Assets Assigned to User * + * @group Users * @author [A. Gianotto] [] * @since [v3.0] * @param $userId @@ -686,8 +720,9 @@ public function assets(Request $request, $id) : JsonResponse | array } /** - * Notify a specific user via email with all of their assigned assets. + * Email Asset List to User * + * @group Users * @author [Lukas Fehling] [] * @since [v6.0.13] * @param Request $request @@ -715,8 +750,9 @@ public function emailAssetList(Request $request, $id) : JsonResponse } /** - * Return JSON containing a list of consumables assigned to a user. + * List Consumables Assigned to User * + * @group Users * @author [A. Gianotto] [] * @since [v3.0] * @param $userId @@ -732,8 +768,9 @@ public function consumables(Request $request, $id) : array } /** - * Return JSON containing a list of accessories assigned to a user. + * List Accessories Assigned to User * + * @group Users * @author [A. Gianotto] [] * @since [v4.6.14] * @param $userId @@ -750,8 +787,9 @@ public function accessories($id) : array } /** - * Return JSON containing a list of licenses assigned to a user. + * List Licenses Assigned to User * + * @group Users * @author [N. Mathar] [] * @since [v5.0] * @param $userId @@ -771,8 +809,9 @@ public function licenses($id) : JsonResponse | array } /** - * Reset the user's two-factor status + * Reset Two-factor * + * @group Users * @author [A. Gianotto] [] * @since [v3.0] * @param $userId @@ -810,8 +849,9 @@ public function postTwoFactorReset(Request $request) : JsonResponse } /** - * Get info on the current user. + * Get Current User Info * + * @group Users * @author [Juan Font] [] * @since [v4.4.2] * @param \Illuminate\Http\Request $request @@ -822,11 +862,14 @@ public function getCurrentUserInfo(Request $request) : array } /** - * Display the EULAs accepted by the user. + * User EULAs * - * @param \App\Models\User $user - * @param \App\Http\Transformers\ActionlogsTransformer $transformer - * @return \Illuminate\Http\JsonResponse + * Gets the lst of accepted EULAs for a user, + * + * @group Users + * @param \App\Models\User $user + * @param \App\Http\Transformers\ActionlogsTransformer $transformer + * @return \Illuminate\Http\JsonResponse *@since [v8.1.16] * @author [Godfrey Martinez] [] */ @@ -841,8 +884,9 @@ public function eulas(User $user, ActionlogsTransformer $transformer) } /** - * Restore a soft-deleted user. + * Restore User * + * @group Users * @author [E. Taylor] [] * @param int $userId * @since [v6.0.0] @@ -879,8 +923,9 @@ public function restore($userId) : JsonResponse /** - * Run the LDAP sync command to import users from LDAP via API. + * LDAP Sync Users * + * @group Users * @author A. Gianotto * @since 8.2.2 * diff --git a/app/Http/Requests/StoreAccessoryRequest.php b/app/Http/Requests/StoreAccessoryRequest.php index c41bae7b4033..1bd102b76afc 100644 --- a/app/Http/Requests/StoreAccessoryRequest.php +++ b/app/Http/Requests/StoreAccessoryRequest.php @@ -38,7 +38,7 @@ public function prepareForValidation(): void public function rules(): array { return array_merge( - ['category_type' => 'in:accessory'], + ['category_type' => 'required|in:accessory'], parent::rules(), ); } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 2ebcb9b035cd..e0c366d7d522 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -24,6 +24,9 @@ use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\URL; +use Knuckles\Camel\Extraction\ExtractedEndpointData; +use Symfony\Component\HttpFoundation\Request; +use Knuckles\Scribe\Scribe; /** * This service provider handles setting the observers on models @@ -65,6 +68,16 @@ public function boot(UrlGenerator $url) } } + // Be sure to wrap in a `class_exists()`, + // so production doesn't break if you installed Scribe as dev-only + if (class_exists(\Knuckles\Scribe\Scribe::class)) { + Scribe::beforeResponseCall(function (Request $request, ExtractedEndpointData $endpointData) { + $token = User::first()->api_token; + $request->headers->add(["Authorization" => "Bearer $token"]); + }); + } + // ... + \Illuminate\Pagination\Paginator::useBootstrap(); Schema::defaultStringLength(191); diff --git a/composer.json b/composer.json index 76a59a22f2f0..e04ab00b0f79 100644 --- a/composer.json +++ b/composer.json @@ -43,6 +43,7 @@ "guzzlehttp/guzzle": "^7.0.1", "intervention/image": "^2.5", "javiereguiluz/easyslugger": "^1.0", + "knuckleswtf/scribe": "^5.3", "laravel-notification-channels/google-chat": "^3.0", "laravel-notification-channels/microsoft-teams": "^1.2", "laravel/framework": "^11.0", diff --git a/composer.lock b/composer.lock index 76e8fb86b69e..98098dbf8483 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "553ce69c21704905c568769de08fffe4", + "content-hash": "30dac1d2bdee2d522ef4bf00fb8b57c1", "packages": [ { "name": "alek13/slack", @@ -2546,6 +2546,100 @@ }, "time": "2015-04-12T19:57:10+00:00" }, + { + "name": "knuckleswtf/scribe", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/knuckleswtf/scribe.git", + "reference": "380f9cd6de6d65d2e92930a8613d8a682e83e8c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/knuckleswtf/scribe/zipball/380f9cd6de6d65d2e92930a8613d8a682e83e8c7", + "reference": "380f9cd6de6d65d2e92930a8613d8a682e83e8c7", + "shasum": "" + }, + "require": { + "erusev/parsedown": "1.7.4", + "ext-fileinfo": "*", + "ext-json": "*", + "ext-pdo": "*", + "fakerphp/faker": "^1.23.1", + "laravel/framework": "^9.0|^10.0|^11.0|^12.0", + "league/flysystem": "^3.0", + "mpociot/reflection-docblock": "^1.0.1", + "nikic/php-parser": "^5.0", + "nunomaduro/collision": "^6.0|^7.0|^8.0", + "php": ">=8.1", + "ramsey/uuid": "^4.2.2", + "shalvah/clara": "^3.1.0", + "shalvah/upgrader": ">=0.6.0", + "spatie/data-transfer-object": "^2.6|^3.0", + "symfony/var-exporter": "^6.0|^7.0", + "symfony/yaml": "^6.0|^7.0" + }, + "replace": { + "mpociot/laravel-apidoc-generator": "*" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^v0.5.0", + "laravel/legacy-factories": "^1.3.0", + "league/fractal": "^0.20", + "nikic/fast-route": "^1.3", + "orchestra/testbench": "^7.0|^8.0|^v9.10.0|^10.0", + "pestphp/pest": "^1.21|^2.0|^3.0", + "phpstan/phpstan": "^2.1.5", + "phpunit/phpunit": "^9.0|^10.0|^11.0", + "spatie/ray": "^1.41", + "symfony/css-selector": "^6.0|^7.0", + "symfony/dom-crawler": "^6.0|^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Knuckles\\Scribe\\ScribeServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Config/helpers.php" + ], + "psr-4": { + "Knuckles\\Camel\\": "camel/", + "Knuckles\\Scribe\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Shalvah" + } + ], + "description": "Generate API documentation for humans from your Laravel codebase.✍", + "homepage": "http://github.com/knuckleswtf/scribe", + "keywords": [ + "api", + "documentation", + "laravel" + ], + "support": { + "issues": "https://github.com/knuckleswtf/scribe/issues", + "source": "https://github.com/knuckleswtf/scribe/tree/5.3.0" + }, + "funding": [ + { + "url": "https://patreon.com/shalvah", + "type": "patreon" + } + ], + "time": "2025-07-28T22:27:25+00:00" + }, { "name": "laravel-notification-channels/google-chat", "version": "3.3.0", @@ -4701,6 +4795,59 @@ ], "time": "2025-03-24T10:02:05+00:00" }, + { + "name": "mpociot/reflection-docblock", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/mpociot/reflection-docblock.git", + "reference": "c8b2e2b1f5cebbb06e2b5ccbf2958f2198867587" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mpociot/reflection-docblock/zipball/c8b2e2b1f5cebbb06e2b5ccbf2958f2198867587", + "reference": "c8b2e2b1f5cebbb06e2b5ccbf2958f2198867587", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mpociot": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "support": { + "issues": "https://github.com/mpociot/reflection-docblock/issues", + "source": "https://github.com/mpociot/reflection-docblock/tree/master" + }, + "time": "2016-06-20T20:53:12+00:00" + }, { "name": "mtdowling/jmespath.php", "version": "2.8.0", @@ -7802,6 +7949,111 @@ ], "time": "2025-08-10T07:50:56+00:00" }, + { + "name": "shalvah/clara", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/shalvah/clara.git", + "reference": "cdbb5737cbdd101756d97dd2279a979a1af7710b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/shalvah/clara/zipball/cdbb5737cbdd101756d97dd2279a979a1af7710b", + "reference": "cdbb5737cbdd101756d97dd2279a979a1af7710b", + "shasum": "" + }, + "require": { + "php": ">=7.4", + "symfony/console": "^4.0|^5.0|^6.0|^7.0" + }, + "require-dev": { + "eloquent/phony-phpunit": "^7.0", + "phpunit/phpunit": "^9.1" + }, + "type": "library", + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Shalvah\\Clara\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "🔊 Simple, pretty, testable console output for CLI apps.", + "keywords": [ + "cli", + "log", + "logging" + ], + "support": { + "issues": "https://github.com/shalvah/clara/issues", + "source": "https://github.com/shalvah/clara/tree/3.2.0" + }, + "time": "2024-02-27T20:30:59+00:00" + }, + { + "name": "shalvah/upgrader", + "version": "0.6.0", + "source": { + "type": "git", + "url": "https://github.com/shalvah/upgrader.git", + "reference": "d95ed17fe9f5e1ee7d47ad835595f1af080a867f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/shalvah/upgrader/zipball/d95ed17fe9f5e1ee7d47ad835595f1af080a867f", + "reference": "d95ed17fe9f5e1ee7d47ad835595f1af080a867f", + "shasum": "" + }, + "require": { + "illuminate/support": ">=8.0", + "nikic/php-parser": "^5.0", + "php": ">=8.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.2.0", + "pestphp/pest": "^1.21", + "phpstan/phpstan": "^1.0", + "spatie/ray": "^1.33" + }, + "type": "library", + "autoload": { + "psr-4": { + "Shalvah\\Upgrader\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Shalvah", + "email": "hello@shalvah.me" + } + ], + "description": "Create automatic upgrades for your package.", + "homepage": "http://github.com/shalvah/upgrader", + "keywords": [ + "upgrade" + ], + "support": { + "issues": "https://github.com/shalvah/upgrader/issues", + "source": "https://github.com/shalvah/upgrader/tree/0.6.0" + }, + "funding": [ + { + "url": "https://patreon.com/shalvah", + "type": "patreon" + } + ], + "time": "2024-02-20T11:51:46+00:00" + }, { "name": "spatie/backtrace", "version": "1.8.1", @@ -7866,6 +8118,70 @@ ], "time": "2025-08-26T08:22:30+00:00" }, + { + "name": "spatie/data-transfer-object", + "version": "3.9.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/data-transfer-object.git", + "reference": "1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/data-transfer-object/zipball/1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8", + "reference": "1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "illuminate/collections": "^8.36", + "jetbrains/phpstorm-attributes": "^1.0", + "larapack/dd": "^1.1", + "phpunit/phpunit": "^9.5.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\DataTransferObject\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brent Roose", + "email": "brent@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Data transfer objects with batteries included", + "homepage": "https://github.com/spatie/data-transfer-object", + "keywords": [ + "data-transfer-object", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/data-transfer-object/issues", + "source": "https://github.com/spatie/data-transfer-object/tree/3.9.1" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "abandoned": "spatie/laravel-data", + "time": "2022-09-16T13:34:38+00:00" + }, { "name": "spatie/db-dumper", "version": "3.8.0", @@ -10944,6 +11260,163 @@ ], "time": "2025-08-13T11:49:31+00:00" }, + { + "name": "symfony/var-exporter", + "version": "v7.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "d4dfcd2a822cbedd7612eb6fbd260e46f87b7137" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/d4dfcd2a822cbedd7612eb6fbd260e46f87b7137", + "reference": "d4dfcd2a822cbedd7612eb6fbd260e46f87b7137", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "require-dev": { + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "lazy-loading", + "proxy", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v7.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-08-18T13:10:53+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "d4f4a66866fe2451f61296924767280ab5732d9d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d4f4a66866fe2451f61296924767280ab5732d9d", + "reference": "d4f4a66866fe2451f61296924767280ab5732d9d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-08-27T11:34:33+00:00" + }, { "name": "tabuna/breadcrumbs", "version": "4.3.0", @@ -16370,87 +16843,6 @@ ], "time": "2025-02-24T10:49:57+00:00" }, - { - "name": "symfony/var-exporter", - "version": "v7.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "d4dfcd2a822cbedd7612eb6fbd260e46f87b7137" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/d4dfcd2a822cbedd7612eb6fbd260e46f87b7137", - "reference": "d4dfcd2a822cbedd7612eb6fbd260e46f87b7137", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "require-dev": { - "symfony/property-access": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\VarExporter\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows exporting any serializable PHP data structure to plain PHP code", - "homepage": "https://symfony.com", - "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "lazy-loading", - "proxy", - "serialize" - ], - "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.3.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-08-18T13:10:53+00:00" - }, { "name": "theseer/tokenizer", "version": "1.2.3", diff --git a/config/app.php b/config/app.php index 8dc0b82312e5..09de26602537 100755 --- a/config/app.php +++ b/config/app.php @@ -448,5 +448,7 @@ */ 'escape_formulas' => env('CSV_ESCAPE_FORMULAS', true), - + + + 'validation_status_code' => env('API_VALIDATION_HTTP_CODE', 200), ]; diff --git a/config/scribe.php b/config/scribe.php new file mode 100644 index 000000000000..351af99698b1 --- /dev/null +++ b/config/scribe.php @@ -0,0 +1,260 @@ + for the generated documentation. + 'title' => config('app.name') . ' API Documentation', + + // A short description of your API. Will be included in the docs webpage, Postman collection and OpenAPI spec. + 'description' => 'This documentation aims to provide the information you need to work with the Snipe-IT JSON REST API.', + + // Text to place in the "Introduction" section, right after the `description`. Markdown and HTML are supported. + 'intro_text' => <<As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile). + You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile). + INTRO, + + // The base URL displayed in the docs. + // If you're using `laravel` type, you can set this to a dynamic string, like '{{ config("app.tenant_url") }}' to get a dynamic base URL. + 'base_url' => config("app.url") . '/api/v1', + + // Routes to include in the docs + 'routes' => [ + [ + 'match' => [ + // Match only routes whose paths match this pattern (use * as a wildcard to match any characters). Example: 'users/*'. + 'prefixes' => ['api/*'], + + // Match only routes whose domains match this pattern (use * as a wildcard to match any characters). Example: 'api.*'. + 'domains' => ['*'], + ], + + // Include these routes even if they did not match the rules above. + 'include' => [ + // 'users.index', 'POST /new', '/auth/*' + ], + + // Exclude these routes even if they matched the rules above. + 'exclude' => [ + 'api/v1', + 'api/v1/{fallbackPlaceholder}' + ], + ], + ], + + // The type of documentation output to generate. + // - "static" will generate a static HTMl page in the /public/docs folder, + // - "laravel" will generate the documentation as a Blade view, so you can add routing and authentication. + // - "external_static" and "external_laravel" do the same as above, but pass the OpenAPI spec as a URL to an external UI template + 'type' => 'laravel', + + // See https://scribe.knuckles.wtf/laravel/reference/config#theme for supported options + 'theme' => 'default', + + 'static' => [ + // HTML documentation, assets and Postman collection will be generated to this folder. + // Source Markdown will still be in resources/docs. + 'output_path' => 'public/docs', + ], + + 'laravel' => [ + // Whether to automatically create a docs route for you to view your generated docs. You can still set up routing manually. + 'add_routes' => true, + + // URL path to use for the docs endpoint (if `add_routes` is true). + // By default, `/docs` opens the HTML page, `/docs.postman` opens the Postman collection, and `/docs.openapi` the OpenAPI spec. + 'docs_url' => '/docs', + + // Directory within `public` in which to store CSS and JS assets. + // By default, assets are stored in `public/vendor/scribe`. + // If set, assets will be stored in `public/{{assets_directory}}` + 'assets_directory' => null, + + // Middleware to attach to the docs endpoint (if `add_routes` is true). + 'middleware' => ['auth'], + ], + + 'external' => [ + 'html_attributes' => [] + ], + + 'try_it_out' => [ + // Add a Try It Out button to your endpoints so consumers can test endpoints right from their browser. + // Don't forget to enable CORS headers for your endpoints. + 'enabled' => true, + + // The base URL to use in the API tester. Leave as null to be the same as the displayed URL (`scribe.base_url`). + 'base_url' => config("app.url"), + + // [Laravel Sanctum] Fetch a CSRF token before each request, and add it as an X-XSRF-TOKEN header. + 'use_csrf' => true, + + // The URL to fetch the CSRF token from (if `use_csrf` is true). + 'csrf_url' => '/sanctum/csrf-cookie', + ], + + // How is your API authenticated? This information will be used in the displayed docs, generated examples and response calls. + 'auth' => [ + // Set this to true if ANY endpoints in your API use authentication. + 'enabled' => true, + + // Set this to true if your API should be authenticated by default. If so, you must also set `enabled` (above) to true. + // You can then use @unauthenticated or @authenticated on individual endpoints to change their status from the default. + 'default' => true, + + // Where is the auth value meant to be sent in a request? + 'in' => 'bearer', + + // The name of the auth parameter (e.g. token, key, apiKey) or header (e.g. Authorization, Api-Key). + 'name' => 'Authorization', + + // The value of the parameter to be used by Scribe to authenticate response calls. + // This will NOT be included in the generated documentation. If empty, Scribe will use a random value. + 'use_value' => env('SCRIBE_AUTH_KEY'), + + // Placeholder your users will see for the auth parameter in the example requests. + // Set this to null if you want Scribe to use a random value as placeholder instead. + 'placeholder' => '{YOUR_BEARER_TOKEN}', + + // Any extra authentication-related info for your users. Markdown and HTML are supported. + 'extra_info' => 'If your account has API access enabled, you can generate a token by clicking in the top right account menu and clicking API tokens.', + ], + + // Example requests for each endpoint will be shown in each of these languages. + // Supported options are: bash, javascript, php, python + // To add a language of your own, see https://scribe.knuckles.wtf/laravel/advanced/example-requests + // Note: does not work for `external` docs types + 'example_languages' => [ + 'bash', + 'javascript', + 'php', + 'python', + ], + + // Generate a Postman collection (v2.1.0) in addition to HTML docs. + // For 'static' docs, the collection will be generated to public/docs/collection.json. + // For 'laravel' docs, it will be generated to storage/app/scribe/collection.json. + // Setting `laravel.add_routes` to true (above) will also add a route for the collection. + 'postman' => [ + 'enabled' => true, + + 'overrides' => [ + // 'info.version' => '2.0.0', + ], + ], + + // Generate an OpenAPI spec (v3.0.1) in addition to docs webpage. + // For 'static' docs, the collection will be generated to public/docs/openapi.yaml. + // For 'laravel' docs, it will be generated to storage/app/scribe/openapi.yaml. + // Setting `laravel.add_routes` to true (above) will also add a route for the spec. + 'openapi' => [ + 'enabled' => true, + + 'overrides' => [ + // 'info.version' => '2.0.0', + ], + + // Additional generators to use when generating the OpenAPI spec. + // Should extend `Knuckles\Scribe\Writing\OpenApiSpecGenerators\OpenApiGenerator`. + 'generators' => [], + ], + + 'groups' => [ + // Endpoints which don't have a @group will be placed in this default group. + 'default' => 'Misc', + + // By default, Scribe will sort groups alphabetically, and endpoints in the order their routes are defined. + // You can override this by listing the groups, subgroups and endpoints here in the order you want them. + // See https://scribe.knuckles.wtf/blog/laravel-v4#easier-sorting and https://scribe.knuckles.wtf/laravel/reference/config#order for details + // Note: does not work for `external` docs types + 'order' => [ + ], + + ], + + // Custom logo path. This will be used as the value of the src attribute for the tag, + // so make sure it points to an accessible URL or path. Set to false to not use a logo. + // For example, if your logo is in public/img: + // - 'logo' => '../img/logo.png' // for `static` type (output folder is public/docs) + // - 'logo' => 'img/logo.png' // for `laravel` type + 'logo' => 'img/logo.png', + + // Customize the "Last updated" value displayed in the docs by specifying tokens and formats. + // Examples: + // - {date:F j Y} => March 28, 2022 + // - {git:short} => Short hash of the last Git commit + // Available tokens are `{date:}` and `{git:}`. + // The format you pass to `date` will be passed to PHP's `date()` function. + // The format you pass to `git` can be either "short" or "long". + // Note: does not work for `external` docs types + 'last_updated' => 'Last updated: {date:F j, Y} ({git:short})', + + 'examples' => [ + // Set this to any number to generate the same example values for parameters on each run, + 'faker_seed' => 1234, + + // With API resources and transformers, Scribe tries to generate example models to use in your API responses. + // By default, Scribe will try the model's factory, and if that fails, try fetching the first from the database. + // You can reorder or remove strategies here. + 'models_source' => ['factoryCreate', 'factoryMake', 'databaseFirst'], + ], + + // The strategies Scribe will use to extract information about your routes at each stage. + // Use configureStrategy() to specify settings for a strategy in the list. + // Use removeStrategies() to remove an included strategy. + 'strategies' => [ + 'metadata' => [ + ...Defaults::METADATA_STRATEGIES, + ], + 'headers' => [ + ...Defaults::HEADERS_STRATEGIES, + Strategies\StaticData::withSettings(data: [ + 'Content-Type' => 'application/json', + 'Accept' => 'application/json', + //'Authorization' => 'application/json', + ]), + ], + 'urlParameters' => [ + ...Defaults::URL_PARAMETERS_STRATEGIES, + ], + 'queryParameters' => [ + ...Defaults::QUERY_PARAMETERS_STRATEGIES, + ], + 'bodyParameters' => [ + // Strategies\BodyParameters\GetFromFormRequest::class, + Strategies\BodyParameters\GetFromInlineValidator::class, + Strategies\BodyParameters\GetFromBodyParamAttribute::class, + Strategies\BodyParameters\GetFromBodyParamTag::class, + Strategies\BodyParameters\GetFromBodyParamAttribute::class + ], + 'responses' => configureStrategy( + Defaults::RESPONSES_STRATEGIES, + Strategies\Responses\ResponseCalls::withSettings( + only: ['GET *'], + // Recommended: disable debug mode in response calls to avoid error stack traces in responses + config: [ + 'app.debug' => false, + ], + ) + ), + 'responseFields' => [ + ...Defaults::RESPONSE_FIELDS_STRATEGIES, + ] + ], + + // For response calls, API resource responses and transformer responses, + // Scribe will try to start database transactions, so no changes are persisted to your database. + // Tell Scribe which connections should be transacted here. If you only use one db connection, you can leave this as is. + 'database_connections_to_transact' => [config('database.default')], + + 'fractal' => [ + // If you are using a custom serializer with league/fractal, you can specify it here. + 'serializer' => null, + ], +]; diff --git a/package-lock.json b/package-lock.json index c43d68251ff5..0c75163a747a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "jquery-ui": "^1.14.1", "jquery-validation": "^1.21.0", "jquery.iframe-transport": "^1.0.0", + "jspdf": "^3.0.3", "jspdf-autotable": "^5.0.2", "less": "^4.2.2", "less-loader": "^6.0", @@ -2193,6 +2194,12 @@ "@types/node": "*" } }, + "node_modules/@types/pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==", + "license": "MIT" + }, "node_modules/@types/parse-json": { "version": "4.0.2", "dev": true, @@ -2258,6 +2265,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, "node_modules/@types/ws": { "version": "8.5.10", "dev": true, @@ -2742,16 +2756,6 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, - "node_modules/atob": { - "version": "2.1.2", - "license": "(MIT OR Apache-2.0)", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/autoprefixer": { "version": "10.4.19", "dev": true, @@ -3343,16 +3347,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/btoa": { - "version": "1.2.1", - "license": "(MIT OR Apache-2.0)", - "bin": { - "btoa": "bin/btoa.js" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/buffer": { "version": "4.9.2", "dev": true, @@ -4617,10 +4611,14 @@ } }, "node_modules/dompurify": { - "version": "2.5.8", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.8.tgz", - "integrity": "sha512-o1vSNgrmYMQObbSSvF/1brBYEQPHhV1+gsmrusO7/GXtp1T9rCS8cXFqVxK/9crT1jA6Ccv+5MTSjBNqr7Sovw==", - "optional": true + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.7.tgz", + "integrity": "sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optional": true, + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } }, "node_modules/domutils": { "version": "2.8.0", @@ -5106,6 +5104,23 @@ "version": "2.1.0", "license": "MIT" }, + "node_modules/fast-png": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fast-png/-/fast-png-6.4.0.tgz", + "integrity": "sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==", + "license": "MIT", + "dependencies": { + "@types/pako": "^2.0.3", + "iobuffer": "^5.3.2", + "pako": "^2.1.0" + } + }, + "node_modules/fast-png/node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "license": "MIT" @@ -6233,6 +6248,12 @@ "node": ">= 0.10" } }, + "node_modules/iobuffer": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.4.0.tgz", + "integrity": "sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==", + "license": "MIT" + }, "node_modules/ion-rangeslider": { "version": "2.3.1", "license": "MIT", @@ -6769,19 +6790,19 @@ } }, "node_modules/jspdf": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.2.tgz", - "integrity": "sha512-myeX9c+p7znDWPk0eTrujCzNjT+CXdXyk7YmJq5nD5V7uLLKmSXnlQ/Jn/kuo3X09Op70Apm0rQSnFWyGK8uEQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-3.0.3.tgz", + "integrity": "sha512-eURjAyz5iX1H8BOYAfzvdPfIKK53V7mCpBTe7Kb16PaM8JSXEcUQNBQaiWMI8wY5RvNOPj4GccMjTlfwRBd+oQ==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.2", - "atob": "^2.1.2", - "btoa": "^1.2.1", + "@babel/runtime": "^7.26.9", + "fast-png": "^6.2.0", "fflate": "^0.8.1" }, "optionalDependencies": { - "canvg": "^3.0.6", + "canvg": "^3.0.11", "core-js": "^3.6.0", - "dompurify": "^2.5.4", + "dompurify": "^3.2.4", "html2canvas": "^1.0.0-rc.5" } }, diff --git a/package.json b/package.json index 3237ef285a79..a1dd60f3f5c8 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "jquery-ui": "^1.14.1", "jquery-validation": "^1.21.0", "jquery.iframe-transport": "^1.0.0", + "jspdf": "^3.0.3", "jspdf-autotable": "^5.0.2", "less": "^4.2.2", "less-loader": "^6.0", diff --git a/public/assets/scribe/css/theme-default.print.css b/public/assets/scribe/css/theme-default.print.css new file mode 100644 index 000000000000..18ab760e753a --- /dev/null +++ b/public/assets/scribe/css/theme-default.print.css @@ -0,0 +1,393 @@ +/* Copied from https://github.com/slatedocs/slate/blob/c4b4c0b8f83e891ca9fab6bbe9a1a88d5fe41292/stylesheets/print.css and unminified */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: bold +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: 0.67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -0.5em +} + +sub { + bottom: -0.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0 +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto +} + +input[type="search"] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: bold +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +.content h1, +.content h2, +.content h3, +.content h4, +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 14px +} + +.content h1, +.content h2, +.content h3, +.content h4 { + font-weight: bold +} + +.content pre, +.content code { + font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif; + font-size: 12px; + line-height: 1.5 +} + +.content pre, +.content code { + word-break: break-all; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +@font-face { + font-family: 'slate'; + src: url(../fonts/slate.eot?-syv14m); + src: url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"), url(../fonts/slate.woff2?-syv14m) format("woff2"), url(../fonts/slate.woff?-syv14m) format("woff"), url(../fonts/slate.ttf?-syv14m) format("truetype"), url(../fonts/slate.svg?-syv14m#slate) format("svg"); + font-weight: normal; + font-style: normal +} + +.content aside.warning:before, +.content aside.notice:before, +.content aside.success:before { + font-family: 'slate'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "\e600" +} + +.content aside.notice:before { + content: "\e602" +} + +.content aside.success:before { + content: "\e606" +} + +.tocify, +.toc-footer, +.lang-selector, +.search, +#nav-button { + display: none +} + +.tocify-wrapper>img { + margin: 0 auto; + display: block +} + +.content { + font-size: 12px +} + +.content pre, +.content code { + border: 1px solid #999; + border-radius: 5px; + font-size: 0.8em +} + +.content pre code { + border: 0 +} + +.content pre { + padding: 1.3em +} + +.content code { + padding: 0.2em +} + +.content table { + border: 1px solid #999 +} + +.content table tr { + border-bottom: 1px solid #999 +} + +.content table td, +.content table th { + padding: 0.7em +} + +.content p { + line-height: 1.5 +} + +.content a { + text-decoration: none; + color: #000 +} + +.content h1 { + font-size: 2.5em; + padding-top: 0.5em; + padding-bottom: 0.5em; + margin-top: 1em; + margin-bottom: 21px; + border: 2px solid #ccc; + border-width: 2px 0; + text-align: center +} + +.content h2 { + font-size: 1.8em; + margin-top: 2em; + border-top: 2px solid #ccc; + padding-top: 0.8em +} + +.content h1+h2, +.content h1+div+h2 { + border-top: none; + padding-top: 0; + margin-top: 0 +} + +.content h3, +.content h4 { + font-size: 0.8em; + margin-top: 1.5em; + margin-bottom: 0.8em; + text-transform: uppercase +} + +.content h5, +.content h6 { + text-transform: uppercase +} + +.content aside { + padding: 1em; + border: 1px solid #ccc; + border-radius: 5px; + margin-top: 1.5em; + margin-bottom: 1.5em; + line-height: 1.6 +} + +.content aside:before { + vertical-align: middle; + padding-right: 0.5em; + font-size: 14px +} diff --git a/public/assets/scribe/css/theme-default.style.css b/public/assets/scribe/css/theme-default.style.css new file mode 100644 index 000000000000..08f2e93a114b --- /dev/null +++ b/public/assets/scribe/css/theme-default.style.css @@ -0,0 +1,1094 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: 'Open Sans', sans-serif; + font-size: 1.2em; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section { + display: block +} + +summary { + cursor: pointer; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: 700 +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: .67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -.5em +} + +sub { + bottom: -.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type=checkbox], +input[type=radio] { + box-sizing: border-box; + padding: 0 +} + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + height: auto +} + +input[type=search] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: .35em .625em .75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: 700 +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +body, +html { + font-family: 'Open Sans', Helvetica Neue, Helvetica, Arial, Microsoft Yahei, 微软雅黑, STXihei, 华文细黑, sans-serif; + font-size: 16px; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + font-family: 'Open Sans', Helvetica Neue, Helvetica, Arial, Microsoft Yahei, 微软雅黑, STXihei, 华文细黑, sans-serif; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + font-weight: 700 +} + +.content code, +.content pre { + font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; + font-size: 14px; + line-height: 1.5 +} + +.content code { + word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +.content aside.notice:before, +.content aside.success:before, +.content aside.warning:before, +.tocify-wrapper>.search:before { + font-family: 'Open Sans', sans-serif; + speak: none; + font-style: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "✋" +} + +.content aside.notice:before { + content: "ℹ" +} + +.content aside.success:before { + content: "✅" +} + +.tocify-wrapper>.search:before { + content: "🔎" +} + +.highlight .c, +.highlight .c1, +.highlight .cm, +.highlight .cs { + color: #909090 +} + +.highlight, +.highlight .w { + background-color: #292929 +} + +.hljs { + display: block; + overflow-x: auto; + padding: .5em; + background: #23241f +} + +.hljs, +.hljs-subst, +.hljs-tag { + color: #f8f8f2 +} + +.hljs-emphasis, +.hljs-strong { + color: #a8a8a2 +} + +.hljs-bullet, +.hljs-link, +.hljs-literal, +.hljs-number, +.hljs-quote, +.hljs-regexp { + color: #ae81ff +} + +.hljs-code, +.hljs-section, +.hljs-selector-class, +.hljs-title { + color: #a6e22e +} + +.hljs-strong { + font-weight: 700 +} + +.hljs-emphasis { + font-style: italic +} + +.hljs-attr, +.hljs-keyword, +.hljs-name, +.hljs-selector-tag { + color: #f92672 +} + +.hljs-attribute, +.hljs-symbol { + color: #66d9ef +} + +.hljs-class .hljs-title, +.hljs-params { + color: #f8f8f2 +} + +.hljs-addition, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-id, +.hljs-selector-pseudo, +.hljs-string, +.hljs-template-variable, +.hljs-type, +.hljs-variable { + color: #e6db74 +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e +} + +body, +html { + color: #333; + padding: 0; + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-color: whitesmoke; + height: 100%; + -webkit-text-size-adjust: none +} + +#toc>ul>li>a>span { + float: right; + background-color: #2484ff; + border-radius: 40px; + width: 20px +} + +.tocify-wrapper { + transition: left .3s ease-in-out; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + z-index: 30; + top: 0; + left: 0; + bottom: 0; + width: 230px; + background-color: #393939; + font-size: 13px; + font-weight: 700 +} + +.tocify-wrapper .lang-selector { + display: none +} + +.tocify-wrapper .lang-selector a { + padding-top: .5em; + padding-bottom: .5em +} + +.tocify-wrapper>img { + display: block +} + +.tocify-wrapper>.search { + position: relative +} + +.tocify-wrapper>.search input { + background: #393939; + border-width: 0 0 1px; + border-color: #666; + padding: 6px 0 6px 20px; + box-sizing: border-box; + margin: 10px 15px; + width: 200px; + outline: none; + color: #fff; + border-radius: 0 +} + +.tocify-wrapper>.search:before { + position: absolute; + top: 17px; + left: 15px; + color: #fff +} + +.tocify-wrapper img+.tocify { + margin-top: 20px +} + +.tocify-wrapper .search-results { + margin-top: 0; + box-sizing: border-box; + height: 0; + overflow-y: auto; + overflow-x: hidden; + transition-property: height, margin; + transition-duration: .18s; + transition-timing-function: ease-in-out; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .search-results.visible { + height: 30%; + margin-bottom: 1em +} + +.tocify-wrapper .search-results li { + margin: 1em 15px; + line-height: 1 +} + +.tocify-wrapper a { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .search-results a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li, +.tocify-wrapper .tocify-item>a { + padding: 0 15px; + display: block; + overflow-x: hidden; + white-space: nowrap; + text-overflow: ellipsis +} +.tocify-wrapper .tocify-item.level-3>a { + padding: 0 25px; +} + +.tocify-wrapper li, +.tocify-wrapper ul { + list-style: none; + margin: 0; + padding: 0; + line-height: 28px +} + +.tocify-wrapper li { + color: #fff; + transition-property: background; + transition-timing-function: linear; + transition-duration: .23s +} + +.tocify-wrapper .tocify-focus { + box-shadow: 0 1px 0 #000; + background-color: #2467af; + color: #fff; + font-weight: bold; +} + +.tocify-wrapper .tocify-subheader { + display: none; + background-color: #262626; + font-weight: 500; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .jets-searching .tocify-subheader, +.tocify-wrapper .tocify-subheader.visible { + display: block; +} + +.tocify-wrapper .tocify-subheader .tocify-item>a { + padding-left: 25px; + font-size: 12px +} + +.tocify-wrapper .tocify-subheader .tocify-item.level-3>a { + padding-left: 35px; +} + +.tocify-wrapper .tocify-subheader>li:last-child { + box-shadow: none +} + +.tocify-wrapper .toc-footer { + padding: 1em 0; + margin-top: 1em; + border-top: 1px dashed #666 +} + +.tocify-wrapper .toc-footer a, +.tocify-wrapper .toc-footer li { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .toc-footer a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li { + font-size: .8em; + line-height: 1.7; + text-decoration: none +} + +#nav-button { + padding: 0 1.5em 5em 0; + display: none; + position: fixed; + top: 0; + left: 0; + z-index: 100; + color: #000; + text-decoration: none; + font-weight: 700; + opacity: .7; + line-height: 16px; + transition: left .3s ease-in-out +} + +#nav-button span { + display: block; + padding: 6px; + background-color: rgba(234, 242, 246, .7); + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: rotate(-90deg) translate(-100%); + transform: rotate(-90deg) translate(-100%); + border-radius: 0 0 0 5px +} + +#nav-button img { + height: 16px; + vertical-align: bottom +} + +#nav-button:hover { + opacity: 1 +} + +#nav-button.open { + left: 230px +} + +.page-wrapper { + margin-left: 230px; + position: relative; + z-index: 10; + background-color: #eaf2f6; + min-height: 100%; + padding-bottom: 1px +} + +.page-wrapper .dark-box { + width: 50%; + background-color: #393939; + position: absolute; + right: 0; + top: 0; + bottom: 0 +} + +.page-wrapper .lang-selector { + position: fixed; + z-index: 50; + border-bottom: 5px solid #393939 +} + +.lang-selector { + background-color: #222; + width: 100%; + font-weight: 700 +} + +.lang-selector button { + display: block; + float: left; + color: #fff; + text-decoration: none; + padding: 0 10px; + line-height: 30px; + outline: 0; + background: transparent; + border: none; +} + +.lang-selector button:active, +.lang-selector button:hover, +.lang-selector button:focus { + background-color: #111; + color: #fff +} + +.lang-selector button.active { + background-color: #393939; + color: #fff +} + +.lang-selector:after { + content: ''; + clear: both; + display: block +} + +.content { + position: relative; + z-index: 30 +} + +.content:after { + content: ''; + display: block; + clear: both +} + +.content>aside, +.content>details, +.content>dl, +.content>h1, +.content>h2, +.content>h3, +.content>h4, +.content>h5, +.content>h6, +.content>ol, +.content>p, +.content>table, +.content>ul, +.content>div, +.content>form>aside, +.content>form>details, +.content>form>h1, +.content>form>h2, +.content>form>h3, +.content>form>h4, +.content>form>h5, +.content>form>h6, +.content>form>p, +.content>form>table, +.content>form>ul, +.content>form>div { + margin-right: 50%; + padding: 0 28px; + box-sizing: border-box; + display: block; + text-shadow: 0 1px 0 #fff +} + +.content>ol, +.content>ul { + padding-left: 43px +} + +.content>div, +.content>h1, +.content>h2 { + clear: both +} + +.content h1 { + font-size: 30px; + padding-top: .5em; + padding-bottom: .5em; + border-bottom: 1px solid #ccc; + margin-bottom: 21px; + margin-top: 2em; + border-top: 1px solid #ddd; + background-image: linear-gradient(180deg, #fff, #f9f9f9) +} + +.content div:first-child+h1, +.content h1:first-child { + border-top-width: 0; + margin-top: 0 +} + +.content h2 { + font-size: 20px; + margin-top: 4em; + margin-bottom: 0; + border-top: 1px solid #ccc; + padding-top: 1.2em; + padding-bottom: 1.2em; + background-image: linear-gradient(180deg, hsla(0, 0%, 100%, .4), hsla(0, 0%, 100%, 0)) +} + +.content h1+div+h2, +.content h1+h2 { + margin-top: -21px; + border-top: none +} + +.content h3, +.content h4, +.content h5, +.content h6 { + font-size: 15px; + margin-top: 2.5em; + margin-bottom: .8em +} + +.content h4, +.content h5, +.content h6 { + font-size: 10px +} + +.content hr { + margin: 2em 0; + border-top: 2px solid #393939; + border-bottom: 2px solid #eaf2f6 +} + +.content table { + margin-bottom: 1em; + overflow: auto +} + +.content table td, +.content table th { + text-align: left; + vertical-align: top; + line-height: 1.6 +} + +.content table th { + padding: 5px 10px; + border-bottom: 1px solid #ccc; + vertical-align: bottom +} + +.content table td { + padding: 10px +} + +.content table tr:last-child { + border-bottom: 1px solid #ccc +} + +.content table tr:nth-child(odd)>td { + background-color: #ebf3f6 +} + +.content table tr:nth-child(even)>td { + background-color: #ebf2f6 +} + +.content dt { + font-weight: 700 +} + +.content dd { + margin-left: 15px +} + +.content dd, +.content dt, +.content li, +.content p { + line-height: 1.6; + margin-top: 0 +} + +.content img { + max-width: 100% +} + +.content code { + padding: 3px; + border-radius: 3px +} + +.content pre>code { + background-color: transparent; + padding: 0 +} + +.content aside { + padding-top: 1em; + padding-bottom: 1em; + margin-top: 1.5em; + margin-bottom: 1.5em; + background: #292929; + line-height: 1.6; + color: #c8c8c8; + text-shadow: none; +} + +.content aside.info { + background: #8fbcd4; + text-shadow: 0 1px 0 #a0c6da; + color: initial; +} + +.content aside.warning { + background-color: #c97a7e; + text-shadow: 0 1px 0 #d18e91; + color: initial; +} + +.content aside.success { + background-color: #6ac174; + text-shadow: 0 1px 0 #80ca89; + color: initial; +} + +.content aside:before { + vertical-align: middle; + padding-right: .5em; + font-size: 14px +} + +.content .search-highlight { + padding: 2px; + margin: -2px; + border-radius: 4px; + border: 1px solid #f7e633; + text-shadow: 1px 1px 0 #666; + background: linear-gradient(to top left, #f7e633, #f1d32f) +} + +.content blockquote, +.content pre { + background-color: #292929; + color: #fff; + padding: 1.5em 28px; + margin: 0; + width: 50%; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0 1px 2px rgba(0, 0, 0, .4) +} + +.content blockquote pre.sf-dump, +.content pre pre.sf-dump { + width: 100%; +} + +.content .annotation { + background-color: #292929; + color: #fff; + padding: 0 28px; + margin: 0; + width: 50%; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0 1px 2px rgba(0, 0, 0, .4) +} + +.content .annotation pre { + padding: 0 0; + width: 100%; + float: none; +} + +.content blockquote>p, +.content pre>p { + margin: 0 +} + +.content blockquote a, +.content pre a { + color: #fff; + text-decoration: none; + border-bottom: 1px dashed #ccc +} + +.content blockquote>p { + background-color: #1c1c1c; + border-radius: 5px; + padding: 13px; + color: #ccc; + border-top: 1px solid #000; + border-bottom: 1px solid #404040 +} + +@media (max-width:930px) { + .tocify-wrapper { + left: -230px + } + .tocify-wrapper.open { + left: 0 + } + .page-wrapper { + margin-left: 0 + } + #nav-button { + display: block + } + .tocify-wrapper .tocify-item>a { + padding-top: .3em; + padding-bottom: .3em + } +} + +@media (max-width:700px) { + .dark-box { + display: none + } + .tocify-wrapper .lang-selector { + display: block + } + .page-wrapper .lang-selector { + display: none + } + .content>aside, + .content>details, + .content>dl, + .content>h1, + .content>h2, + .content>h3, + .content>h4, + .content>h5, + .content>h6, + .content>ol, + .content>p, + .content>table, + .content>ul, + .content>div, + .content>form>aside, + .content>form>details, + .content>form>h1, + .content>form>h2, + .content>form>h3, + .content>form>h4, + .content>form>h5, + .content>form>h6, + .content>form>p, + .content>form>table, + .content>form>ul, + .content>form>div { + margin-right: 0; + } + .content blockquote, + .content pre { + float: none; + width: auto + } + .content .annotation { + float: none; + width: auto + } +} + +.badge { + padding: 1px 9px 2px; + white-space: nowrap; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; + color: #ffffff; + text-shadow: none !important; + font-weight: bold; +} + +.badge.badge-darkred { + background-color: darkred; +} + +.badge.badge-red { + background-color: red; +} + +.badge.badge-blue { + background-color: blue; +} + +.badge.badge-darkblue { + background-color: darkblue; +} + +.badge.badge-green { + background-color: green; +} + +.badge.badge-darkgoldenrod { + background-color: darkgoldenrod; +} + +.badge.badge-darkgreen { + background-color: darkgreen; +} + +.badge.badge-purple { + background-color: purple; +} + +.badge.badge-black { + background-color: black; +} + +.badge.badge-grey { + background-color: grey; +} + +.fancy-heading-panel { + background-color: lightgrey; + border-radius: 5px; + padding-left: 5px !important; + padding-top: 5px !important; + padding-bottom: 5px !important; + margin-left: 25px; + margin-right: 10px; + width: 47%; +} + +@media screen and (max-width: 700px) { + .fancy-heading-panel { + width: 95%; + } + +} + +button { + border: none; +} + +* { + /* Foreground, Background */ + scrollbar-color: #3c4c67 transparent; +} +*::-webkit-scrollbar { /* Background */ + width: 10px; + height: 10px; + background: transparent; +} + +*::-webkit-scrollbar-thumb { /* Foreground */ + background: #626161; +} diff --git a/public/assets/scribe/images/navbar.png b/public/assets/scribe/images/navbar.png new file mode 100644 index 000000000000..df38e90d87e1 Binary files /dev/null and b/public/assets/scribe/images/navbar.png differ diff --git a/public/assets/scribe/js/theme-default-5.3.0.js b/public/assets/scribe/js/theme-default-5.3.0.js new file mode 100644 index 000000000000..31c845141c23 --- /dev/null +++ b/public/assets/scribe/js/theme-default-5.3.0.js @@ -0,0 +1,149 @@ +document.addEventListener('DOMContentLoaded', function() { + const updateHash = function (id) { + window.location.hash = `#${id}`; + }; + + const navButton = document.getElementById('nav-button'); + const menuWrapper = document.querySelector('.tocify-wrapper'); + function toggleSidebar(event) { + event.preventDefault(); + if (menuWrapper) { + menuWrapper.classList.toggle('open'); + navButton.classList.toggle('open'); + } + } + function closeSidebar() { + if (menuWrapper) { + menuWrapper.classList.remove('open'); + navButton.classList.remove('open'); + } + } + navButton.addEventListener('click', toggleSidebar); + + window.hljs.highlightAll(); + + const wrapper = document.getElementById('toc'); + // https://jets.js.org/ + window.jets = new window.Jets({ + // *OR - Selects elements whose values contains at least one part of search substring + searchSelector: '*OR', + searchTag: '#input-search', + contentTag: '#toc li', + didSearch: function(term) { + wrapper.classList.toggle('jets-searching', String(term).length > 0) + }, + // map these accent keys to plain values + diacriticsMap: { + a: 'ÀÁÂÃÄÅàáâãäåĀāąĄ', + c: 'ÇçćĆčČ', + d: 'đĐďĎ', + e: 'ÈÉÊËèéêëěĚĒēęĘ', + i: 'ÌÍÎÏìíîïĪī', + l: 'łŁ', + n: 'ÑñňŇńŃ', + o: 'ÒÓÔÕÕÖØòóôõöøŌō', + r: 'řŘ', + s: 'ŠšśŚ', + t: 'ťŤ', + u: 'ÙÚÛÜùúûüůŮŪū', + y: 'ŸÿýÝ', + z: 'ŽžżŻźŹ' + } + }); + + function hashChange() { + const currentItems = document.querySelectorAll('.tocify-subheader.visible, .tocify-item.tocify-focus'); + Array.from(currentItems).forEach((elem) => { + elem.classList.remove('visible', 'tocify-focus'); + }); + + const currentTag = document.querySelector(`a[href="${window.location.hash}"]`); + if (currentTag) { + const parent = currentTag.closest('.tocify-subheader'); + if (parent) { + parent.classList.add('visible'); + } + + const siblings = currentTag.closest('.tocify-header'); + if (siblings) { + Array.from(siblings.querySelectorAll('.tocify-subheader')).forEach((elem) => { + elem.classList.add('visible'); + }); + } + + currentTag.parentElement.classList.add('tocify-focus'); + + // wait for dom changes to be done + setTimeout(() => { + currentTag.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }); + // only close the sidebar on level-2 events + if (currentTag.parentElement.classList.contains('level-2')) { + closeSidebar(); + } + }, 1500); + } + } + + let languages = JSON.parse(document.body.getAttribute('data-languages')); + // Support a key => value object where the key is the name, or an array of strings where the value is the name + if (!Array.isArray(languages)) { + languages = Object.values(languages); + } + // if there is no language use the first one + const currentLanguage = window.localStorage.getItem('language') || languages[0]; + const languageStyle = document.getElementById('language-style'); + const langSelector = document.querySelectorAll('.lang-selector button.lang-button'); + + function setActiveLanguage(newLanguage) { + window.localStorage.setItem('language', newLanguage); + if (!languageStyle) { + return; + } + + const newStyle = languages.map((language) => { + return language === newLanguage + // the current one should be visible + ? `body .content .${language}-example pre { display: block; }` + // the inactive one should be hidden + : `body .content .${language}-example pre { display: none; }`; + }).join(`\n`); + + Array.from(langSelector).forEach((elem) => { + elem.classList.toggle('active', elem.getAttribute('data-language-name') === newLanguage); + }); + + const activeHash = window.location.hash.slice(1); + + languageStyle.innerHTML = newStyle; + + setTimeout(() => { + updateHash(activeHash); + }, 200); + } + + setActiveLanguage(currentLanguage); + + Array.from(langSelector).forEach((elem) => { + elem.addEventListener('click', () => { + const newLanguage = elem.getAttribute('data-language-name'); + setActiveLanguage(newLanguage); + }); + }); + + window.addEventListener('hashchange', hashChange, false); + + const divs = document.querySelectorAll('.content h1[id], .content h2[id]'); + + document.addEventListener('scroll', () => { + divs.forEach(item => { + const rect = item.getBoundingClientRect(); + if (rect.top > 0 && rect.top < 150) { + const location = window.location.toString().split('#')[0]; + history.replaceState(null, null, location + '#' + item.id); + hashChange(); + } + }); + }); + + hashChange(); +}); diff --git a/public/assets/scribe/js/tryitout-5.3.0.js b/public/assets/scribe/js/tryitout-5.3.0.js new file mode 100644 index 000000000000..2a1d2b8a9356 --- /dev/null +++ b/public/assets/scribe/js/tryitout-5.3.0.js @@ -0,0 +1,289 @@ +window.abortControllers = {}; + +function cacheAuthValue() { + // Whenever the auth header is set for one endpoint, cache it for the others + window.lastAuthValue = ''; + let authInputs = document.querySelectorAll(`.auth-value`) + authInputs.forEach(el => { + el.addEventListener('input', (event) => { + window.lastAuthValue = event.target.value; + authInputs.forEach(otherInput => { + if (otherInput === el) return; + // Don't block the main thread + setTimeout(() => { + otherInput.value = window.lastAuthValue; + }, 0); + }); + }); + }); +} + +window.addEventListener('DOMContentLoaded', cacheAuthValue); + +function getCookie(name) { + if (!document.cookie) { + return null; + } + + const cookies = document.cookie.split(';') + .map(c => c.trim()) + .filter(c => c.startsWith(name + '=')); + + if (cookies.length === 0) { + return null; + } + + return decodeURIComponent(cookies[0].split('=')[1]); +} + +function tryItOut(endpointId) { + document.querySelector(`#btn-tryout-${endpointId}`).hidden = true; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`).hidden = false; + executeBtn.disabled = false; + + // Show all input fields + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'block'); + + if (document.querySelector(`#form-${endpointId}`).dataset.authed === "1") { + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = false); + } + // Expand all nested fields + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = true); +} + +function cancelTryOut(endpointId) { + if (window.abortControllers[endpointId]) { + window.abortControllers[endpointId].abort(); + delete window.abortControllers[endpointId]; + } + + document.querySelector(`#btn-tryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.hidden = true; + executeBtn.textContent = executeBtn.dataset.initialText; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = true; + // Hide inputs + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'none'); + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = false); + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = true); + + document.querySelector('#execution-results-' + endpointId).hidden = true; + document.querySelector('#execution-error-' + endpointId).hidden = true; + + // Revert to sample code blocks + document.querySelector('#example-requests-' + endpointId).hidden = false; + document.querySelector('#example-responses-' + endpointId).hidden = false; +} + +function makeAPICall(method, path, body = {}, query = {}, headers = {}, endpointId = null) { + console.log({endpointId, path, body, query, headers}); + + if (!(body instanceof FormData) && typeof body !== "string") { + body = JSON.stringify(body) + } + + const url = new URL(window.tryItOutBaseUrl + '/' + path.replace(/^\//, '')); + + // We need this function because if you try to set an array or object directly to a URLSearchParams object, + // you'll get [object Object] or the array.toString() + function addItemToSearchParamsObject(key, value, searchParams) { + if (Array.isArray(value)) { + value.forEach((v, i) => { + // Append {filters: [first, second]} as filters[0]=first&filters[1]second + addItemToSearchParamsObject(key + '[' + i + ']', v, searchParams); + }) + } else if (typeof value === 'object' && value !== null) { + Object.keys(value).forEach((i) => { + // Append {filters: {name: first}} as filters[name]=first + addItemToSearchParamsObject(key + '[' + i + ']', value[i], searchParams); + }); + } else { + searchParams.append(key, value); + } + } + + Object.keys(query) + .forEach(key => addItemToSearchParamsObject(key, query[key], url.searchParams)); + + window.abortControllers[endpointId] = new AbortController(); + + return fetch(url, { + method, + headers, + body: method === 'GET' ? undefined : body, + signal: window.abortControllers[endpointId].signal, + referrer: window.tryItOutBaseUrl, + mode: 'cors', + credentials: 'same-origin', + }) + .then(response => Promise.all([response.status, response.statusText, response.text(), response.headers])); +} + +function hideCodeSamples(endpointId) { + document.querySelector('#example-requests-' + endpointId).hidden = true; + document.querySelector('#example-responses-' + endpointId).hidden = true; +} + +function handleResponse(endpointId, response, status, headers) { + hideCodeSamples(endpointId); + + // Hide error views + document.querySelector('#execution-error-' + endpointId).hidden = true; + + const responseContentEl = document.querySelector('#execution-response-content-' + endpointId); + + // Check if the response contains Laravel's dd() default dump output + const isLaravelDump = response.includes('Sfdump'); + + // If it's a Laravel dd() dump, use innerHTML to render it safely + if (isLaravelDump) { + responseContentEl.innerHTML = response === '' ? responseContentEl.dataset.emptyResponseText : response; + } else { + // Otherwise, stick to textContent for regular responses + responseContentEl.textContent = response === '' ? responseContentEl.dataset.emptyResponseText : response; + } + + // Prettify it if it's JSON + let isJson = false; + try { + const jsonParsed = JSON.parse(response); + if (jsonParsed !== null) { + isJson = true; + response = JSON.stringify(jsonParsed, null, 4); + responseContentEl.textContent = response; + } + } catch (e) { + + } + + isJson && window.hljs.highlightElement(responseContentEl); + const statusEl = document.querySelector('#execution-response-status-' + endpointId); + statusEl.textContent = ` (${status})`; + document.querySelector('#execution-results-' + endpointId).hidden = false; + statusEl.scrollIntoView({behavior: "smooth", block: "center"}); +} + +function handleError(endpointId, err) { + hideCodeSamples(endpointId); + // Hide response views + document.querySelector('#execution-results-' + endpointId).hidden = true; + + // Show error views + let errorMessage = err.message || err; + const $errorMessageEl = document.querySelector('#execution-error-message-' + endpointId); + $errorMessageEl.textContent = errorMessage + $errorMessageEl.textContent; + const errorEl = document.querySelector('#execution-error-' + endpointId); + errorEl.hidden = false; + errorEl.scrollIntoView({behavior: "smooth", block: "center"}); + +} + +async function executeTryOut(endpointId, form) { + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.textContent = executeBtn.dataset.loadingText; + executeBtn.disabled = true; + executeBtn.scrollIntoView({behavior: "smooth", block: "center"}); + + let body; + let setter; + if (form.dataset.hasfiles === "1") { + body = new FormData(); + setter = (name, value) => body.append(name, value); + } else if (form.dataset.isarraybody === "1") { + body = []; + setter = (name, value) => _.set(body, name, value); + } else { + body = {}; + setter = (name, value) => _.set(body, name, value); + } + const bodyParameters = form.querySelectorAll('input[data-component=body]'); + bodyParameters.forEach(el => { + let value = el.value; + + if (el.type === 'number' && typeof value === 'string') { + value = parseFloat(value); + } + + if (el.type === 'file' && el.files[0]) { + setter(el.name, el.files[0]); + return; + } + + if (el.type !== 'radio') { + if (value === "" && el.required === false) { + // Don't include empty optional values in the request + return; + } + setter(el.name, value); + return; + } + + if (el.checked) { + value = (value === 'false') ? false : true; + setter(el.name, value); + } + }); + + const query = {}; + const queryParameters = form.querySelectorAll('input[data-component=query]'); + queryParameters.forEach(el => { + if (el.type !== 'radio' || (el.type === 'radio' && el.checked)) { + if (el.value === '') { + // Don't include empty values in the request + return; + } + + _.set(query, el.name, el.value); + } + }); + + let path = form.dataset.path; + const urlParameters = form.querySelectorAll('input[data-component=url]'); + urlParameters.forEach(el => (path = path.replace(new RegExp(`\\{${el.name}\\??}`), el.value))); + + const headers = Object.fromEntries(Array.from(form.querySelectorAll('input[data-component=header]')) + .map(el => [el.name, el.value])); + + // When using FormData, the browser sets the correct content-type + boundary + let method = form.dataset.method; + if (body instanceof FormData) { + delete headers['Content-Type']; + + // When using FormData with PUT or PATCH, use method spoofing so PHP can access the post body + if (['PUT', 'PATCH'].includes(form.dataset.method)) { + method = 'POST'; + setter('_method', form.dataset.method); + } + } + + let preflightPromise = Promise.resolve(); + if (window.useCsrf && window.csrfUrl) { + preflightPromise = makeAPICall('GET', window.csrfUrl).then(() => { + headers['X-XSRF-TOKEN'] = getCookie('XSRF-TOKEN'); + }); + } + + return preflightPromise.then(() => makeAPICall(method, path, body, query, headers, endpointId)) + .then(([responseStatus, statusText, responseContent, responseHeaders]) => { + handleResponse(endpointId, responseContent, responseStatus, responseHeaders) + }) + .catch(err => { + if (err.name === "AbortError") { + console.log("Request cancelled"); + return; + } + console.log("Error while making request: ", err); + handleError(endpointId, err); + }) + .finally(() => { + executeBtn.disabled = false; + executeBtn.textContent = executeBtn.dataset.initialText; + }); +} diff --git a/public/js/dist/bootstrap-table.js b/public/js/dist/bootstrap-table.js index db7563c70206..f7d5213125d6 100644 --- a/public/js/dist/bootstrap-table.js +++ b/public/js/dist/bootstrap-table.js @@ -38836,3 +38836,14 @@ if(xr(e,"index.xml"))throw new Error("Unsupported NUMBERS 09 file");throw new Er }($.BootstrapTable); })); + +/** + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.24.2 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ + +!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],r):r((t="undefined"!=typeof globalThis?globalThis:t||self).jQuery)}(this,(function(t){"use strict";function r(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e0&&t[0]<4?1:+(t[0]+t[1])),!r&&n&&(!(t=n.match(/Edge\/(\d+)/))||t[1]>=74)&&(t=n.match(/Chrome\/(\d+)/))&&(r=+t[1]),rt=r}function It(){if(ot)return nt;ot=1;var t=At(),r=x(),e=g().String;return nt=!!Object.getOwnPropertySymbols&&!r((function(){var r=Symbol("symbol detection");return!e(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&t&&t<41}))}function Dt(){if(ut)return it;ut=1;var t=It();return it=t&&!Symbol.sham&&"symbol"==typeof Symbol.iterator}function Lt(){if(ct)return at;ct=1;var t=Pt(),r=xt(),e=Rt(),n=Dt(),o=Object;return at=n?function(t){return"symbol"==typeof t}:function(n){var i=t("Symbol");return r(i)&&e(i.prototype,o(n))}}function _t(){if(lt)return ft;lt=1;var t=String;return ft=function(r){try{return t(r)}catch(t){return"Object"}}}function Ft(){if(pt)return st;pt=1;var t=xt(),r=_t(),e=TypeError;return st=function(n){if(t(n))return n;throw new e(r(n)+" is not a function")}}function Mt(){if(vt)return ht;vt=1;var t=Ft(),r=Ot();return ht=function(e,n){var o=e[n];return r(o)?void 0:t(o)}}function Nt(){if(gt)return dt;gt=1;var t=R(),r=xt(),e=Et(),n=TypeError;return dt=function(o,i){var u,a;if("string"===i&&r(u=o.toString)&&!e(a=t(u,o)))return a;if(r(u=o.valueOf)&&!e(a=t(u,o)))return a;if("string"!==i&&r(u=o.toString)&&!e(a=t(u,o)))return a;throw new n("Can't convert object to primitive value")}}var $t,Bt,Vt,zt,Ht,Ut,Wt,Gt,Kt,qt,Yt,Jt,Xt,Qt,Zt,tr,rr,er,nr,or,ir,ur,ar,cr,fr={exports:{}};function lr(){return Bt?$t:(Bt=1,$t=!1)}function sr(){if(zt)return Vt;zt=1;var t=g(),r=Object.defineProperty;return Vt=function(e,n){try{r(t,e,{value:n,configurable:!0,writable:!0})}catch(r){t[e]=n}return n}}function pr(){if(Ht)return fr.exports;Ht=1;var t=lr(),r=g(),e=sr(),n="__core-js_shared__",o=fr.exports=r[n]||e(n,{});return(o.versions||(o.versions=[])).push({version:"3.44.0",mode:t?"pure":"global",copyright:"© 2014-2025 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.44.0/LICENSE",source:"https://github.com/zloirock/core-js"}),fr.exports}function hr(){if(Wt)return Ut;Wt=1;var t=pr();return Ut=function(r,e){return t[r]||(t[r]=e||{})}}function vr(){if(Kt)return Gt;Kt=1;var t=Tt(),r=Object;return Gt=function(e){return r(t(e))}}function dr(){if(Yt)return qt;Yt=1;var t=Ct(),r=vr(),e=t({}.hasOwnProperty);return qt=Object.hasOwn||function(t,n){return e(r(t),n)}}function gr(){if(Xt)return Jt;Xt=1;var t=Ct(),r=0,e=Math.random(),n=t(1.1.toString);return Jt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+n(++r+e,36)}}function yr(){if(Zt)return Qt;Zt=1;var t=g(),r=hr(),e=dr(),n=gr(),o=It(),i=Dt(),u=t.Symbol,a=r("wks"),c=i?u.for||u:u&&u.withoutSetter||n;return Qt=function(t){return e(a,t)||(a[t]=o&&e(u,t)?u[t]:c("Symbol."+t)),a[t]}}function br(){if(rr)return tr;rr=1;var t=R(),r=Et(),e=Lt(),n=Mt(),o=Nt(),i=yr(),u=TypeError,a=i("toPrimitive");return tr=function(i,c){if(!r(i)||e(i))return i;var f,l=n(i,a);if(l){if(void 0===c&&(c="default"),f=t(l,i,c),!r(f)||e(f))return f;throw new u("Can't convert object to primitive value")}return void 0===c&&(c="number"),o(i,c)}}function mr(){if(nr)return er;nr=1;var t=br(),r=Lt();return er=function(e){var n=t(e,"string");return r(n)?n:n+""}}function Cr(){if(ir)return or;ir=1;var t=g(),r=Et(),e=t.document,n=r(e)&&r(e.createElement);return or=function(t){return n?e.createElement(t):{}}}function Sr(){if(ar)return ur;ar=1;var t=E(),r=x(),e=Cr();return ur=!t&&!r((function(){return 7!==Object.defineProperty(e("div"),"a",{get:function(){return 7}}).a}))}function wr(){if(cr)return j;cr=1;var t=E(),r=R(),e=bt(),n=mt(),o=jt(),i=mr(),u=dr(),a=Sr(),c=Object.getOwnPropertyDescriptor;return j.f=t?c:function(t,f){if(t=o(t),f=i(f),a)try{return c(t,f)}catch(t){}if(u(t,f))return n(!r(e.f,t,f),t[f])},j}var Or,Tr,jr,xr,Er,Pr,Rr,kr={};function Ar(){if(Tr)return Or;Tr=1;var t=E(),r=x();return Or=t&&r((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))}function Ir(){if(xr)return jr;xr=1;var t=Et(),r=String,e=TypeError;return jr=function(n){if(t(n))return n;throw new e(r(n)+" is not an object")}}function Dr(){if(Er)return kr;Er=1;var t=E(),r=Sr(),e=Ar(),n=Ir(),o=mr(),i=TypeError,u=Object.defineProperty,a=Object.getOwnPropertyDescriptor,c="enumerable",f="configurable",l="writable";return kr.f=t?e?function(t,r,e){if(n(t),r=o(r),n(e),"function"==typeof t&&"prototype"===r&&"value"in e&&l in e&&!e[l]){var i=a(t,r);i&&i[l]&&(t[r]=e.value,e={configurable:f in e?e[f]:i[f],enumerable:c in e?e[c]:i[c],writable:!1})}return u(t,r,e)}:u:function(t,e,a){if(n(t),e=o(e),n(a),r)try{return u(t,e,a)}catch(t){}if("get"in a||"set"in a)throw new i("Accessors not supported");return"value"in a&&(t[e]=a.value),t},kr}function Lr(){if(Rr)return Pr;Rr=1;var t=E(),r=Dr(),e=mt();return Pr=t?function(t,n,o){return r.f(t,n,e(1,o))}:function(t,r,e){return t[r]=e,t}}var _r,Fr,Mr,Nr,$r,Br,Vr,zr,Hr,Ur,Wr,Gr,Kr,qr,Yr,Jr={exports:{}};function Xr(){if(Fr)return _r;Fr=1;var t=E(),r=dr(),e=Function.prototype,n=t&&Object.getOwnPropertyDescriptor,o=r(e,"name"),i=o&&"something"===function(){}.name,u=o&&(!t||t&&n(e,"name").configurable);return _r={EXISTS:o,PROPER:i,CONFIGURABLE:u}}function Qr(){if(Nr)return Mr;Nr=1;var t=Ct(),r=xt(),e=pr(),n=t(Function.toString);return r(e.inspectSource)||(e.inspectSource=function(t){return n(t)}),Mr=e.inspectSource}function Zr(){if(zr)return Vr;zr=1;var t=hr(),r=gr(),e=t("keys");return Vr=function(t){return e[t]||(e[t]=r(t))}}function te(){return Ur?Hr:(Ur=1,Hr={})}function re(){if(Gr)return Wr;Gr=1;var t,r,e,n=function(){if(Br)return $r;Br=1;var t=g(),r=xt(),e=t.WeakMap;return $r=r(e)&&/native code/.test(String(e))}(),o=g(),i=Et(),u=Lr(),a=dr(),c=pr(),f=Zr(),l=te(),s="Object already initialized",p=o.TypeError,h=o.WeakMap;if(n||c.state){var v=c.state||(c.state=new h);v.get=v.get,v.has=v.has,v.set=v.set,t=function(t,r){if(v.has(t))throw new p(s);return r.facade=t,v.set(t,r),r},r=function(t){return v.get(t)||{}},e=function(t){return v.has(t)}}else{var d=f("state");l[d]=!0,t=function(t,r){if(a(t,d))throw new p(s);return r.facade=t,u(t,d,r),r},r=function(t){return a(t,d)?t[d]:{}},e=function(t){return a(t,d)}}return Wr={set:t,get:r,has:e,enforce:function(n){return e(n)?r(n):t(n,{})},getterFor:function(t){return function(e){var n;if(!i(e)||(n=r(e)).type!==t)throw new p("Incompatible receiver, "+t+" required");return n}}}}function ee(){if(Kr)return Jr.exports;Kr=1;var t=Ct(),r=x(),e=xt(),n=dr(),o=E(),i=Xr().CONFIGURABLE,u=Qr(),a=re(),c=a.enforce,f=a.get,l=String,s=Object.defineProperty,p=t("".slice),h=t("".replace),v=t([].join),d=o&&!r((function(){return 8!==s((function(){}),"length",{value:8}).length})),g=String(String).split("String"),y=Jr.exports=function(t,r,e){"Symbol("===p(l(r),0,7)&&(r="["+h(l(r),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),e&&e.getter&&(r="get "+r),e&&e.setter&&(r="set "+r),(!n(t,"name")||i&&t.name!==r)&&(o?s(t,"name",{value:r,configurable:!0}):t.name=r),d&&e&&n(e,"arity")&&t.length!==e.arity&&s(t,"length",{value:e.arity});try{e&&n(e,"constructor")&&e.constructor?o&&s(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var u=c(t);return n(u,"source")||(u.source=v(g,"string"==typeof r?r:"")),t};return Function.prototype.toString=y((function(){return e(this)&&f(this).source||u(this)}),"toString"),Jr.exports}function ne(){if(Yr)return qr;Yr=1;var t=xt(),r=Dr(),e=ee(),n=sr();return qr=function(o,i,u,a){a||(a={});var c=a.enumerable,f=void 0!==a.name?a.name:i;if(t(u)&&e(u,f,a),a.global)c?o[i]=u:n(i,u);else{try{a.unsafe?o[i]&&(c=!0):delete o[i]}catch(t){}c?o[i]=u:r.f(o,i,{value:u,enumerable:!1,configurable:!a.nonConfigurable,writable:!a.nonWritable})}return o}}var oe,ie,ue,ae,ce,fe,le,se,pe,he,ve,de,ge,ye,be,me,Ce,Se={};function we(){if(ae)return ue;ae=1;var t=function(){if(ie)return oe;ie=1;var t=Math.ceil,r=Math.floor;return oe=Math.trunc||function(e){var n=+e;return(n>0?r:t)(n)}}();return ue=function(r){var e=+r;return e!=e||0===e?0:t(e)}}function Oe(){if(fe)return ce;fe=1;var t=we(),r=Math.max,e=Math.min;return ce=function(n,o){var i=t(n);return i<0?r(i+o,0):e(i,o)}}function Te(){if(se)return le;se=1;var t=we(),r=Math.min;return le=function(e){var n=t(e);return n>0?r(n,9007199254740991):0}}function je(){if(he)return pe;he=1;var t=Te();return pe=function(r){return t(r.length)}}function xe(){if(de)return ve;de=1;var t=jt(),r=Oe(),e=je(),n=function(n){return function(o,i,u){var a=t(o),c=e(a);if(0===c)return!n&&-1;var f,l=r(u,c);if(n&&i!=i){for(;c>l;)if((f=a[l++])!=f)return!0}else for(;c>l;l++)if((n||l in a)&&a[l]===i)return n||l||0;return!n&&-1}};return ve={includes:n(!0),indexOf:n(!1)}}function Ee(){if(ye)return ge;ye=1;var t=Ct(),r=dr(),e=jt(),n=xe().indexOf,o=te(),i=t([].push);return ge=function(t,u){var a,c=e(t),f=0,l=[];for(a in c)!r(o,a)&&r(c,a)&&i(l,a);for(;u.length>f;)r(c,a=u[f++])&&(~n(l,a)||i(l,a));return l}}function Pe(){return me?be:(me=1,be=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"])}var Re,ke,Ae,Ie,De,Le,_e,Fe,Me,Ne,$e,Be,Ve,ze,He,Ue,We,Ge,Ke,qe,Ye,Je,Xe,Qe,Ze,tn,rn,en,nn={};function on(){return Re||(Re=1,nn.f=Object.getOwnPropertySymbols),nn}function un(){if(Ae)return ke;Ae=1;var t=Pt(),r=Ct(),e=function(){if(Ce)return Se;Ce=1;var t=Ee(),r=Pe().concat("length","prototype");return Se.f=Object.getOwnPropertyNames||function(e){return t(e,r)},Se}(),n=on(),o=Ir(),i=r([].concat);return ke=t("Reflect","ownKeys")||function(t){var r=e.f(o(t)),u=n.f;return u?i(r,u(t)):r}}function an(){if(De)return Ie;De=1;var t=dr(),r=un(),e=wr(),n=Dr();return Ie=function(o,i,u){for(var a=r(i),c=n.f,f=e.f,l=0;l9007199254740991)throw t("Maximum allowed index exceeded");return r}}function pn(){if(He)return ze;He=1;var t=E(),r=Dr(),e=mt();return ze=function(n,o,i){t?r.f(n,o,e(0,i)):n[o]=i}}function hn(){if(We)return Ue;We=1;var t={};return t[yr()("toStringTag")]="z",Ue="[object z]"===String(t)}function vn(){if(Ke)return Ge;Ke=1;var t=hn(),r=xt(),e=St(),n=yr()("toStringTag"),o=Object,i="Arguments"===e(function(){return arguments}());return Ge=t?e:function(t){var u,a,c;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(a=function(t,r){try{return t[r]}catch(t){}}(u=o(t),n))?a:i?e(u):"Object"===(c=e(u))&&r(u.callee)?"Arguments":c}}function dn(){if(Ye)return qe;Ye=1;var t=Ct(),r=x(),e=xt(),n=vn(),o=Pt(),i=Qr(),u=function(){},a=o("Reflect","construct"),c=/^\s*(?:class|function)\b/,f=t(c.exec),l=!c.test(u),s=function(t){if(!e(t))return!1;try{return a(u,[],t),!0}catch(t){return!1}},p=function(t){if(!e(t))return!1;switch(n(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return l||!!f(c,i(t))}catch(t){return!0}};return p.sham=!0,qe=!a||r((function(){var t;return s(s.call)||!s(Object)||!s((function(){t=!0}))||t}))?p:s}function gn(){if(Xe)return Je;Xe=1;var t=ln(),r=dn(),e=Et(),n=yr()("species"),o=Array;return Je=function(i){var u;return t(i)&&(u=i.constructor,(r(u)&&(u===o||t(u.prototype))||e(u)&&null===(u=u[n]))&&(u=void 0)),void 0===u?o:u}}function yn(){if(Ze)return Qe;Ze=1;var t=gn();return Qe=function(r,e){return new(t(r))(0===e?0:e)}}function bn(){if(rn)return tn;rn=1;var t=x(),r=yr(),e=At(),n=r("species");return tn=function(r){return e>=51||!t((function(){var t=[];return(t.constructor={})[n]=function(){return{foo:1}},1!==t[r](Boolean).foo}))}}!function(){if(en)return d;en=1;var t=fn(),r=x(),e=ln(),n=Et(),o=vr(),i=je(),u=sn(),a=pn(),c=yn(),f=bn(),l=yr(),s=At(),p=l("isConcatSpreadable"),h=s>=51||!r((function(){var t=[];return t[p]=!1,t.concat()[0]!==t})),v=function(t){if(!n(t))return!1;var r=t[p];return void 0!==r?!!r:e(t)};t({target:"Array",proto:!0,arity:1,forced:!h||!f("concat")},{concat:function(t){var r,e,n,f,l,s=o(this),p=c(s,0),h=0;for(r=-1,n=arguments.length;rT;T++)if((h||T in S)&&(m=O(b=S[T],T,C),r))if(a)x[T]=m;else if(m)switch(r){case 3:return!0;case 5:return b;case 6:return T;case 2:u(x,b)}else switch(r){case 4:return!1;case 7:u(x,b)}return s?-1:f||l?l:x}};return On={forEach:a(0),map:a(1),filter:a(2),some:a(3),every:a(4),find:a(5),findIndex:a(6),filterReject:a(7)}}!function(){if(jn)return xn;jn=1;var t=fn(),r=Rn().filter;t({target:"Array",proto:!0,forced:!bn()("filter")},{filter:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}})}();var kn,An,In,Dn,Ln,_n,Fn,Mn,Nn,$n,Bn={},Vn={};function zn(){if(An)return kn;An=1;var t=Ee(),r=Pe();return kn=Object.keys||function(e){return t(e,r)}}function Hn(){if(Ln)return Dn;Ln=1;var t=Pt();return Dn=t("document","documentElement")}function Un(){if(Fn)return _n;Fn=1;var t,r=Ir(),e=function(){if(In)return Vn;In=1;var t=E(),r=Ar(),e=Dr(),n=Ir(),o=jt(),i=zn();return Vn.f=t&&!r?Object.defineProperties:function(t,r){n(t);for(var u,a=o(r),c=i(r),f=c.length,l=0;f>l;)e.f(t,u=c[l++],a[u]);return t},Vn}(),n=Pe(),o=te(),i=Hn(),u=Cr(),a=Zr(),c="prototype",f="script",l=a("IE_PROTO"),s=function(){},p=function(t){return"<"+f+">"+t+""},h=function(t){t.write(p("")),t.close();var r=t.parentWindow.Object;return t=null,r},v=function(){try{t=new ActiveXObject("htmlfile")}catch(t){}var r,e,o;v="undefined"!=typeof document?document.domain&&t?h(t):(e=u("iframe"),o="java"+f+":",e.style.display="none",i.appendChild(e),e.src=String(o),(r=e.contentWindow.document).open(),r.write(p("document.F=Object")),r.close(),r.F):h(t);for(var a=n.length;a--;)delete v[c][n[a]];return v()};return o[l]=!0,_n=Object.create||function(t,n){var o;return null!==t?(s[c]=r(t),o=new s,s[c]=null,o[l]=t):o=v(),void 0===n?o:e.f(o,n)}}function Wn(){if(Nn)return Mn;Nn=1;var t=yr(),r=Un(),e=Dr().f,n=t("unscopables"),o=Array.prototype;return void 0===o[n]&&e(o,n,{configurable:!0,value:r(null)}),Mn=function(t){o[n][t]=!0}}!function(){if($n)return Bn;$n=1;var t=fn(),r=Rn().find,e=Wn(),n="find",o=!0;n in[]&&Array(1)[n]((function(){o=!1})),t({target:"Array",proto:!0,forced:o},{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),e(n)}();var Gn,Kn={};!function(){if(Gn)return Kn;Gn=1;var t=fn(),r=xe().includes,e=x(),n=Wn();t({target:"Array",proto:!0,forced:e((function(){return!Array(1).includes()}))},{includes:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),n("includes")}();var qn,Yn,Jn,Xn={};function Qn(){if(Yn)return qn;Yn=1;var t=x();return qn=function(r,e){var n=[][r];return!!n&&t((function(){n.call(null,e||function(){return 1},1)}))}}!function(){if(Jn)return Xn;Jn=1;var t=fn(),r=En(),e=xe().indexOf,n=Qn(),o=r([].indexOf),i=!!o&&1/o([1],1,-0)<0;t({target:"Array",proto:!0,forced:i||!n("indexOf")},{indexOf:function(t){var r=arguments.length>1?arguments[1]:void 0;return i?o(this,t,r)||0:e(this,t,r)}})}();var Zn,to,ro,eo={};!function(){if(ro)return eo;ro=1;var t=fn(),r=function(){if(to)return Zn;to=1;var t=E(),r=Ct(),e=R(),n=x(),o=zn(),i=on(),u=bt(),a=vr(),c=wt(),f=Object.assign,l=Object.defineProperty,s=r([].concat);return Zn=!f||n((function(){if(t&&1!==f({b:1},f(l({},"a",{enumerable:!0,get:function(){l(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var r={},e={},n=Symbol("assign detection"),i="abcdefghijklmnopqrst";return r[n]=7,i.split("").forEach((function(t){e[t]=t})),7!==f({},r)[n]||o(f({},e)).join("")!==i}))?function(r,n){for(var f=a(r),l=arguments.length,p=1,h=i.f,v=u.f;l>p;)for(var d,g=c(arguments[p++]),y=h?s(o(g),h(g)):o(g),b=y.length,m=0;b>m;)d=y[m++],t&&!e(v,g,d)||(f[d]=g[d]);return f}:f,Zn}();t({target:"Object",stat:!0,arity:2,forced:Object.assign!==r},{assign:r})}();var no,oo={};!function(){if(no)return oo;no=1;var t=fn(),r=vr(),e=zn();t({target:"Object",stat:!0,forced:x()((function(){e(1)}))},{keys:function(t){return e(r(t))}})}();var io,uo,ao,co={};!function(){if(ao)return co;ao=1;var t=hn(),r=ne(),e=function(){if(uo)return io;uo=1;var t=hn(),r=vn();return io=t?{}.toString:function(){return"[object "+r(this)+"]"}}();t||r(Object.prototype,"toString",e,{unsafe:!0})}();var fo,lo,so,po,ho,vo,go,yo={};function bo(){if(po)return so;po=1;var t=dr(),r=xt(),e=vr(),n=Zr(),o=function(){if(lo)return fo;lo=1;var t=x();return fo=!t((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))}(),i=n("IE_PROTO"),u=Object,a=u.prototype;return so=o?u.getPrototypeOf:function(n){var o=e(n);if(t(o,i))return o[i];var c=o.constructor;return r(c)&&o instanceof c?c.prototype:o instanceof u?a:null}}!function(){if(go)return yo;go=1;var t=fn(),r=function(){if(vo)return ho;vo=1;var t=E(),r=x(),e=Ct(),n=bo(),o=zn(),i=jt(),u=e(bt().f),a=e([].push),c=t&&r((function(){var t=Object.create(null);return t[2]=2,!u(t,2)})),f=function(r){return function(e){for(var f,l=i(e),s=o(l),p=c&&null===n(l),h=s.length,v=0,d=[];h>v;)f=s[v++],t&&!(p?f in l:u(l,f))||a(d,r?[f,l[f]]:l[f]);return d}};return ho={entries:f(!0),values:f(!1)}}().values;t({target:"Object",stat:!0},{values:function(t){return r(t)}})}();var mo,Co,So,wo,Oo,To,jo,xo,Eo,Po={};function Ro(){if(Co)return mo;Co=1;var t=vn(),r=String;return mo=function(e){if("Symbol"===t(e))throw new TypeError("Cannot convert a Symbol value to a string");return r(e)}}function ko(){return wo?So:(wo=1,So="\t\n\v\f\r                 \u2028\u2029\ufeff")}function Ao(){if(To)return Oo;To=1;var t=Ct(),r=Tt(),e=Ro(),n=ko(),o=t("".replace),i=RegExp("^["+n+"]+"),u=RegExp("(^|[^"+n+"])["+n+"]+$"),a=function(t){return function(n){var a=e(r(n));return 1&t&&(a=o(a,i,"")),2&t&&(a=o(a,u,"$1")),a}};return Oo={start:a(1),end:a(2),trim:a(3)}}!function(){if(Eo)return Po;Eo=1;var t=fn(),r=function(){if(xo)return jo;xo=1;var t=g(),r=x(),e=Ct(),n=Ro(),o=Ao().trim,i=ko(),u=t.parseInt,a=t.Symbol,c=a&&a.iterator,f=/^[+-]?0x/i,l=e(f.exec),s=8!==u(i+"08")||22!==u(i+"0x16")||c&&!r((function(){u(Object(c))}));return jo=s?function(t,r){var e=o(n(t));return u(e,r>>>0||(l(f,e)?16:10))}:u}();t({global:!0,forced:parseInt!==r},{parseInt:r})}();var Io,Do,Lo,_o,Fo,Mo,No,$o,Bo,Vo,zo,Ho,Uo,Wo,Go,Ko,qo,Yo,Jo,Xo,Qo,Zo,ti,ri,ei,ni,oi,ii,ui,ai,ci,fi,li,si,pi,hi,vi,di,gi,yi,bi,mi,Ci,Si,wi,Oi,Ti,ji,xi,Ei,Pi,Ri,ki,Ai,Ii={};function Di(){if(Do)return Io;Do=1;var t=g(),r=kt(),e=St(),n=function(t){return r.slice(0,t.length)===t};return Io=n("Bun/")?"BUN":n("Cloudflare-Workers")?"CLOUDFLARE":n("Deno/")?"DENO":n("Node.js/")?"NODE":t.Bun&&"string"==typeof Bun.version?"BUN":t.Deno&&"object"==typeof Deno.version?"DENO":"process"===e(t.process)?"NODE":t.window&&t.document?"BROWSER":"REST"}function Li(){if(_o)return Lo;_o=1;var t=Di();return Lo="NODE"===t}function _i(){if(Mo)return Fo;Mo=1;var t=g();return Fo=t}function Fi(){if(Vo)return Bo;Vo=1;var t=Et();return Bo=function(r){return t(r)||null===r}}function Mi(){if(Ho)return zo;Ho=1;var t=Fi(),r=String,e=TypeError;return zo=function(n){if(t(n))return n;throw new e("Can't set "+r(n)+" as a prototype")}}function Ni(){if(Wo)return Uo;Wo=1;var t=function(){if($o)return No;$o=1;var t=Ct(),r=Ft();return No=function(e,n,o){try{return t(r(Object.getOwnPropertyDescriptor(e,n)[o]))}catch(t){}}}(),r=Et(),e=Tt(),n=Mi();return Uo=Object.setPrototypeOf||("__proto__"in{}?function(){var o,i=!1,u={};try{(o=t(Object.prototype,"__proto__","set"))(u,[]),i=u instanceof Array}catch(t){}return function(t,u){return e(t),n(u),r(t)?(i?o(t,u):t.__proto__=u,t):t}}():void 0)}function $i(){if(Ko)return Go;Ko=1;var t=Dr().f,r=dr(),e=yr()("toStringTag");return Go=function(n,o,i){n&&!i&&(n=n.prototype),n&&!r(n,e)&&t(n,e,{configurable:!0,value:o})}}function Bi(){if(Yo)return qo;Yo=1;var t=ee(),r=Dr();return qo=function(e,n,o){return o.get&&t(o.get,n,{getter:!0}),o.set&&t(o.set,n,{setter:!0}),r.f(e,n,o)}}function Vi(){if(Xo)return Jo;Xo=1;var t=Pt(),r=Bi(),e=yr(),n=E(),o=e("species");return Jo=function(e){var i=t(e);n&&i&&!i[o]&&r(i,o,{configurable:!0,get:function(){return this}})}}function zi(){if(Zo)return Qo;Zo=1;var t=Rt(),r=TypeError;return Qo=function(e,n){if(t(n,e))return e;throw new r("Incorrect invocation")}}function Hi(){if(ri)return ti;ri=1;var t=dn(),r=_t(),e=TypeError;return ti=function(n){if(t(n))return n;throw new e(r(n)+" is not a constructor")}}function Ui(){if(ni)return ei;ni=1;var t=Ir(),r=Hi(),e=Ot(),n=yr()("species");return ei=function(o,i){var u,a=t(o).constructor;return void 0===a||e(u=t(a)[n])?i:r(u)}}function Wi(){if(ii)return oi;ii=1;var t=P(),r=Function.prototype,e=r.apply,n=r.call;return oi="object"==typeof Reflect&&Reflect.apply||(t?n.bind(e):function(){return n.apply(e,arguments)}),oi}function Gi(){if(ai)return ui;ai=1;var t=Ct();return ui=t([].slice)}function Ki(){if(fi)return ci;fi=1;var t=TypeError;return ci=function(r,e){if(rb;b++)if((C=k(h[b]))&&u(p,C))return C;return new s(!1)}g=a(h,y)}for(S=j?h.next:g.next;!(w=r(S,g)).done;){try{C=k(w.value)}catch(t){f(g,"throw",t)}if("object"==typeof C&&C&&u(p,C))return C}return new s(!1)}}function Au(){if(Cu)return mu;Cu=1;var t=yr()("iterator"),r=!1;try{var e=0,n={next:function(){return{done:!!e++}},return:function(){r=!0}};n[t]=function(){return this},Array.from(n,(function(){throw 2}))}catch(t){}return mu=function(e,n){try{if(!n&&!r)return!1}catch(t){return!1}var o=!1;try{var i={};i[t]=function(){return{next:function(){return{done:o=!0}}}},e(i)}catch(t){}return o}}function Iu(){if(wu)return Su;wu=1;var t=ru(),r=Au(),e=eu().CONSTRUCTOR;return Su=e||!r((function(r){t.all(r).then(void 0,(function(){}))}))}var Du,Lu={};var _u,Fu={};var Mu,Nu={};var $u,Bu,Vu,zu,Hu={};function Uu(){if(Bu)return $u;Bu=1;var t=Ir(),r=Et(),e=uu();return $u=function(n,o){if(t(n),r(o)&&o.constructor===n)return o;var i=e.f(n);return(0,i.resolve)(o),i.promise}}zu||(zu=1,function(){if(ou)return Ii;ou=1;var t,r,e,n,o=fn(),i=lr(),u=Li(),a=g(),c=_i(),f=R(),l=ne(),s=Ni(),p=$i(),h=Vi(),v=Ft(),d=xt(),y=Et(),b=zi(),m=Ui(),C=Yi().set,S=Qi(),w=Zi(),O=tu(),T=Xi(),j=re(),x=ru(),E=eu(),P=uu(),k="Promise",A=E.CONSTRUCTOR,I=E.REJECTION_EVENT,D=E.SUBCLASSING,L=j.getterFor(k),_=j.set,F=x&&x.prototype,M=x,N=F,$=a.TypeError,B=a.document,V=a.process,z=P.f,H=z,U=!!(B&&B.createEvent&&a.dispatchEvent),W="unhandledrejection",G=function(t){var r;return!(!y(t)||!d(r=t.then))&&r},K=function(t,r){var e,n,o,i=r.value,u=1===r.state,a=u?t.ok:t.fail,c=t.resolve,l=t.reject,s=t.domain;try{a?(u||(2===r.rejection&&Q(r),r.rejection=1),!0===a?e=i:(s&&s.enter(),e=a(i),s&&(s.exit(),o=!0)),e===t.promise?l(new $("Promise-chain cycle")):(n=G(e))?f(n,e,c,l):c(e)):l(i)}catch(t){s&&!o&&s.exit(),l(t)}},q=function(t,r){t.notified||(t.notified=!0,S((function(){for(var e,n=t.reactions;e=n.get();)K(e,t);t.notified=!1,r&&!t.rejection&&J(t)})))},Y=function(t,r,e){var n,o;U?((n=B.createEvent("Event")).promise=r,n.reason=e,n.initEvent(t,!1,!0),a.dispatchEvent(n)):n={promise:r,reason:e},!I&&(o=a["on"+t])?o(n):t===W&&w("Unhandled promise rejection",e)},J=function(t){f(C,a,(function(){var r,e=t.facade,n=t.value;if(X(t)&&(r=O((function(){u?V.emit("unhandledRejection",n,e):Y(W,e,n)})),t.rejection=u||X(t)?2:1,r.error))throw r.value}))},X=function(t){return 1!==t.rejection&&!t.parent},Q=function(t){f(C,a,(function(){var r=t.facade;u?V.emit("rejectionHandled",r):Y("rejectionhandled",r,t.value)}))},Z=function(t,r,e){return function(n){t(r,n,e)}},tt=function(t,r,e){t.done||(t.done=!0,e&&(t=e),t.value=r,t.state=2,q(t,!0))},rt=function(t,r,e){if(!t.done){t.done=!0,e&&(t=e);try{if(t.facade===r)throw new $("Promise can't be resolved itself");var n=G(r);n?S((function(){var e={done:!1};try{f(n,r,Z(rt,e,t),Z(tt,e,t))}catch(r){tt(e,r,t)}})):(t.value=r,t.state=1,q(t,!1))}catch(r){tt({done:!1},r,t)}}};if(A&&(N=(M=function(r){b(this,N),v(r),f(t,this);var e=L(this);try{r(Z(rt,e),Z(tt,e))}catch(t){tt(e,t)}}).prototype,(t=function(t){_(this,{type:k,done:!1,notified:!1,parent:!1,reactions:new T,rejection:!1,state:0,value:null})}).prototype=l(N,"then",(function(t,r){var e=L(this),n=z(m(this,M));return e.parent=!0,n.ok=!d(t)||t,n.fail=d(r)&&r,n.domain=u?V.domain:void 0,0===e.state?e.reactions.add(n):S((function(){K(n,e)})),n.promise})),r=function(){var r=new t,e=L(r);this.promise=r,this.resolve=Z(rt,e),this.reject=Z(tt,e)},P.f=z=function(t){return t===M||t===e?new r(t):H(t)},!i&&d(x)&&F!==Object.prototype)){n=F.then,D||l(F,"then",(function(t,r){var e=this;return new M((function(t,r){f(n,e,t,r)})).then(t,r)}),{unsafe:!0});try{delete F.constructor}catch(t){}s&&s(F,N)}o({global:!0,constructor:!0,wrap:!0,forced:A},{Promise:M}),e=c.Promise,p(M,k,!1,!0),h(k)}(),function(){if(Ou)return Tu;Ou=1;var t=fn(),r=R(),e=Ft(),n=uu(),o=tu(),i=ku();t({target:"Promise",stat:!0,forced:Iu()},{all:function(t){var u=this,a=n.f(u),c=a.resolve,f=a.reject,l=o((function(){var n=e(u.resolve),o=[],a=0,l=1;i(t,(function(t){var e=a++,i=!1;l++,r(n,u,t).then((function(t){i||(i=!0,o[e]=t,--l||c(o))}),f)})),--l||c(o)}));return l.error&&f(l.value),a.promise}})}(),function(){if(Du)return Lu;Du=1;var t=fn(),r=lr(),e=eu().CONSTRUCTOR,n=ru(),o=Pt(),i=xt(),u=ne(),a=n&&n.prototype;if(t({target:"Promise",proto:!0,forced:e,real:!0},{catch:function(t){return this.then(void 0,t)}}),!r&&i(n)){var c=o("Promise").prototype.catch;a.catch!==c&&u(a,"catch",c,{unsafe:!0})}}(),function(){if(_u)return Fu;_u=1;var t=fn(),r=R(),e=Ft(),n=uu(),o=tu(),i=ku();t({target:"Promise",stat:!0,forced:Iu()},{race:function(t){var u=this,a=n.f(u),c=a.reject,f=o((function(){var n=e(u.resolve);i(t,(function(t){r(n,u,t).then(a.resolve,c)}))}));return f.error&&c(f.value),a.promise}})}(),function(){if(Mu)return Nu;Mu=1;var t=fn(),r=uu();t({target:"Promise",stat:!0,forced:eu().CONSTRUCTOR},{reject:function(t){var e=r.f(this);return(0,e.reject)(t),e.promise}})}(),function(){if(Vu)return Hu;Vu=1;var t=fn(),r=Pt(),e=lr(),n=ru(),o=eu().CONSTRUCTOR,i=Uu(),u=r("Promise"),a=e&&!o;t({target:"Promise",stat:!0,forced:e||o},{resolve:function(t){return i(a&&this===u?n:this,t)}})}());var Wu,Gu,Ku,qu,Yu,Ju,Xu,Qu,Zu,ta,ra,ea={};function na(){if(Gu)return Wu;Gu=1;var t=Ir();return Wu=function(){var r=t(this),e="";return r.hasIndices&&(e+="d"),r.global&&(e+="g"),r.ignoreCase&&(e+="i"),r.multiline&&(e+="m"),r.dotAll&&(e+="s"),r.unicode&&(e+="u"),r.unicodeSets&&(e+="v"),r.sticky&&(e+="y"),e}}function oa(){if(qu)return Ku;qu=1;var t=x(),r=g().RegExp,e=t((function(){var t=r("a","y");return t.lastIndex=2,null!==t.exec("abcd")})),n=e||t((function(){return!r("a","y").sticky})),o=e||t((function(){var t=r("^r","gy");return t.lastIndex=2,null!==t.exec("str")}));return Ku={BROKEN_CARET:o,MISSED_STICKY:n,UNSUPPORTED_Y:e}}function ia(){if(ta)return Zu;ta=1;var t,r,e=R(),n=Ct(),o=Ro(),i=na(),u=oa(),a=hr(),c=Un(),f=re().get,l=function(){if(Ju)return Yu;Ju=1;var t=x(),r=g().RegExp;return Yu=t((function(){var t=r(".","s");return!(t.dotAll&&t.test("\n")&&"s"===t.flags)}))}(),s=function(){if(Qu)return Xu;Qu=1;var t=x(),r=g().RegExp;return Xu=t((function(){var t=r("(?b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")}))}(),p=a("native-string-replace",String.prototype.replace),h=RegExp.prototype.exec,v=h,d=n("".charAt),y=n("".indexOf),b=n("".replace),m=n("".slice),C=(r=/b*/g,e(h,t=/a/,"a"),e(h,r,"a"),0!==t.lastIndex||0!==r.lastIndex),S=u.BROKEN_CARET,w=void 0!==/()??/.exec("")[1];return(C||w||S||l||s)&&(v=function(t){var r,n,u,a,l,s,g,O=this,T=f(O),j=o(t),x=T.raw;if(x)return x.lastIndex=O.lastIndex,r=e(v,x,j),O.lastIndex=x.lastIndex,r;var E=T.groups,P=S&&O.sticky,R=e(i,O),k=O.source,A=0,I=j;if(P&&(R=b(R,"y",""),-1===y(R,"g")&&(R+="g"),I=m(j,O.lastIndex),O.lastIndex>0&&(!O.multiline||O.multiline&&"\n"!==d(j,O.lastIndex-1))&&(k="(?: "+k+")",I=" "+I,A++),n=new RegExp("^(?:"+k+")",R)),w&&(n=new RegExp("^"+k+"$(?!\\s)",R)),C&&(u=O.lastIndex),a=e(h,P?n:O,I),P?a?(a.input=m(a.input,A),a[0]=m(a[0],A),a.index=O.lastIndex,O.lastIndex+=a[0].length):O.lastIndex=0:C&&a&&(O.lastIndex=O.global?a.index+a[0].length:u),w&&a&&a.length>1&&e(p,a[0],n,(function(){for(l=1;l1?arguments[1]:void 0)}})}();var Ta,ja,xa,Ea,Pa,Ra,ka,Aa,Ia,Da={};function La(){if(ja)return Ta;ja=1,ua();var t=R(),r=ne(),e=ia(),n=x(),o=yr(),i=Lr(),u=o("species"),a=RegExp.prototype;return Ta=function(c,f,l,s){var p=o(c),h=!n((function(){var t={};return t[p]=function(){return 7},7!==""[c](t)})),v=h&&!n((function(){var t=!1,r=/a/;return"split"===c&&((r={}).constructor={},r.constructor[u]=function(){return r},r.flags="",r[p]=/./[p]),r.exec=function(){return t=!0,null},r[p](""),!t}));if(!h||!v||l){var d=/./[p],g=f(p,""[c],(function(r,n,o,i,u){var c=n.exec;return c===e||c===a.exec?h&&!u?{done:!0,value:t(d,n,o,i)}:{done:!0,value:t(r,o,n,i)}:{done:!1}}));r(String.prototype,c,g[0]),r(a,p,g[1])}s&&i(a[p],"sham",!0)}}function _a(){if(Ra)return Pa;Ra=1;var t=function(){if(Ea)return xa;Ea=1;var t=Ct(),r=we(),e=Ro(),n=Tt(),o=t("".charAt),i=t("".charCodeAt),u=t("".slice),a=function(t){return function(a,c){var f,l,s=e(n(a)),p=r(c),h=s.length;return p<0||p>=h?t?"":void 0:(f=i(s,p))<55296||f>56319||p+1===h||(l=i(s,p+1))<56320||l>57343?t?o(s,p):f:t?u(s,p,p+2):l-56320+(f-55296<<10)+65536}};return xa={codeAt:a(!1),charAt:a(!0)}}().charAt;return Pa=function(r,e,n){return e+(n?t(r,e).length:1)}}function Fa(){if(Aa)return ka;Aa=1;var t=R(),r=Ir(),e=xt(),n=St(),o=ia(),i=TypeError;return ka=function(u,a){var c=u.exec;if(e(c)){var f=t(c,u,a);return null!==f&&r(f),f}if("RegExp"===n(u))return t(o,u,a);throw new i("RegExp#exec called on incompatible receiver")}}!function(){if(Ia)return Da;Ia=1;var t=R(),r=Ct(),e=La(),n=Ir(),o=Et(),i=Tt(),u=Ui(),a=_a(),c=Te(),f=Ro(),l=Mt(),s=Fa(),p=oa(),h=x(),v=p.UNSUPPORTED_Y,d=Math.min,g=r([].push),y=r("".slice),b=!h((function(){var t=/(?:)/,r=t.exec;t.exec=function(){return r.apply(this,arguments)};var e="ab".split(t);return 2!==e.length||"a"!==e[0]||"b"!==e[1]})),m="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;e("split",(function(r,e,p){var h="0".split(void 0,0).length?function(r,n){return void 0===r&&0===n?[]:t(e,this,r,n)}:e;return[function(e,n){var u=i(this),a=o(e)?l(e,r):void 0;return a?t(a,e,u,n):t(h,f(u),e,n)},function(t,r){var o=n(this),i=f(t);if(!m){var l=p(h,o,i,r,h!==e);if(l.done)return l.value}var b=u(o,RegExp),C=o.unicode,S=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(v?"g":"y"),w=new b(v?"^(?:"+o.source+")":o,S),O=void 0===r?4294967295:r>>>0;if(0===O)return[];if(0===i.length)return null===s(w,i)?[i]:[];for(var T=0,j=0,x=[];j1?arguments[1]:void 0)},Wa}(),o=Lr(),i=function(t){if(t&&t.forEach!==n)try{o(t,"forEach",n)}catch(r){t.forEach=n}};for(var u in r)r[u]&&i(t[u]&&t[u].prototype);i(e)}();var Ya,Ja={};!function(){if(Ya)return Ja;Ya=1;var t=fn(),r=Ct(),e=wt(),n=jt(),o=Qn(),i=r([].join);t({target:"Array",proto:!0,forced:e!==Object||!o("join",",")},{join:function(t){return i(n(this),void 0===t?",":t)}})}();var Xa,Qa,Za,tc,rc,ec,nc,oc,ic,uc,ac,cc={};function fc(){if(Qa)return Xa;Qa=1;var t=_t(),r=TypeError;return Xa=function(e,n){if(!delete e[n])throw new r("Cannot delete property "+t(n)+" of "+t(e))}}!function(){if(ac)return cc;ac=1;var t=fn(),r=Ct(),e=Ft(),n=vr(),o=je(),i=fc(),u=Ro(),a=x(),c=function(){if(tc)return Za;tc=1;var t=Gi(),r=Math.floor,e=function(n,o){var i=n.length;if(i<8)for(var u,a,c=1;c0;)n[a]=n[--a];a!==c++&&(n[a]=u)}else for(var f=r(i/2),l=e(t(n,0,f),o),s=e(t(n,f),o),p=l.length,h=s.length,v=0,d=0;v3)){if(s)return!0;if(h)return h<603;var t,r,e,n,o="";for(t=65;t<76;t++){switch(r=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:e=3;break;case 68:case 71:e=4;break;default:e=2}for(n=0;n<47;n++)v.push({k:r+n,v:e})}for(v.sort((function(t,r){return r.v-t.v})),n=0;nu(e)?1:-1}}(t)),a=o(l),f=0;f]*>)/g,a=/\$([$&'`]|\d{1,2})/g;return pc=function(t,c,f,l,s,p){var h=f+t.length,v=l.length,d=a;return void 0!==s&&(s=r(s),d=u),o(p,d,(function(r,o){var u;switch(n(o,0)){case"$":return"$";case"&":return t;case"`":return i(c,0,f);case"'":return i(c,h);case"<":u=s[i(o,1,-1)];break;default:var a=+o;if(0===a)return r;if(a>v){var p=e(a/10);return 0===p?r:p<=v?void 0===l[p-1]?n(o,1):l[p-1]+n(o,1):r}u=l[a-1]}return void 0===u?"":u}))}}!function(){if(vc)return dc;vc=1;var t=Wi(),r=R(),e=Ct(),n=La(),o=x(),i=Ir(),u=xt(),a=Et(),c=we(),f=Te(),l=Ro(),s=Tt(),p=_a(),h=Mt(),v=gc(),d=ha(),g=Fa(),y=yr()("replace"),b=Math.max,m=Math.min,C=e([].concat),S=e([].push),w=e("".indexOf),O=e("".slice),T="$0"==="a".replace(/./,"$0"),j=!!/./[y]&&""===/./[y]("a","$0");n("replace",(function(e,n,o){var T=j?"$":"$0";return[function(t,e){var o=s(this),i=a(t)?h(t,y):void 0;return i?r(i,t,o,e):r(n,l(o),t,e)},function(r,e){var a=i(this),s=l(r);if("string"==typeof e&&-1===w(e,T)&&-1===w(e,"$<")){var h=o(n,a,s,e);if(h.done)return h.value}var y=u(e);y||(e=l(e));var j,x=l(d(a)),E=-1!==w(x,"g");E&&(j=-1!==w(x,"u"),a.lastIndex=0);for(var P,R=[];null!==(P=g(a,s))&&(S(R,P),E);){""===l(P[0])&&(a.lastIndex=p(s,f(a.lastIndex),j))}for(var k,A="",I=0,D=0;D=I&&(A+=O(s,I,F)+L,I=F+_.length)}return A+O(s,I)}]}),!!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")}))||!T||j)}();var yc,bc={};!function(){if(yc)return bc;yc=1;var t,r=fn(),e=En(),n=wr().f,o=Te(),i=Ro(),u=wa(),a=Tt(),c=Oa(),f=lr(),l=e("".slice),s=Math.min,p=c("startsWith");r({target:"String",proto:!0,forced:!!(f||p||(t=n(String.prototype,"startsWith"),!t||t.writable))&&!p},{startsWith:function(t){var r=i(a(this));u(t);var e=o(s(arguments.length>1?arguments[1]:void 0,r.length)),n=i(t);return l(r,e,e+n.length)===n}})}();var mc=t.fn.bootstrapTable.utils;function Cc(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1]?t.constants.classes.select:t.constants.classes.input;return t.options.iconSize?mc.sprintf("%s %s-%s",r,r,t.options.iconSize):r}function Sc(r){return r.options.filterControlContainer?t("".concat(r.options.filterControlContainer)):r.options.height&&r._initialized?r.$tableContainer.find(".fixed-table-header table thead"):r.$header}function wc(r){return t.inArray(r,[37,38,39,40])>-1}function Oc(t){return Sc(t).find('select, input:not([type="checkbox"]):not([type="radio"])')}function Tc(t,r,e,n,o){var i=null==r?"":r.toString().trim();if(i=mc.removeHTML(mc.unescapeHTML(i)),e=mc.removeHTML(mc.unescapeHTML(e)),!function(t,r){for(var e=function(t){return t[0].options}(t),n=0;n0;)n.options[0]=null;for(var u=0;u0){var i=[];o.each((function(o,u){var a,c,f=t(u);if(e=f.closest("[data-field]").data("field"),(n=r._valuesFilterControl.filter((function(t){return t.field===e}))).length>0&&(n[0].hasFocus||n[0].value)){var l=(a=f.get(0),c=n[0],function(){if(c.hasFocus&&a.focus(),Array.isArray(c.value)){var r=t(a);t.each(c.value,(function(t,e){r.find(mc.sprintf("option[value='%s']",e)).prop("selected",!0)}))}else a.value=c.value;!function(t,r){try{if(t)if(t.createTextRange){var e=t.createTextRange();e.move("character",r),e.select()}else t.setSelectionRange&&t.setSelectionRange(r,r)}catch(t){console.error(t)}}(a,c.position)});i.push(l)}})),i.length>0&&i.forEach((function(t){return t()}))}}function kc(t){return String(t).replace(/([:.\[\],])/g,"\\$1")}function Ac(r){var e=r.options.data;t.each(r.header.fields,(function(t,n){var o,i,u,a,c=r.columns[r.fieldsColumnsIndex[n]],f=Sc(r).find("select.bootstrap-table-filter-control-".concat(kc(c.field)));if(u=(i=c).filterControl,a=i.searchable,u&&"select"===u.toLowerCase()&&a&&(void 0===(o=c.filterData)||"column"===o.toLowerCase())&&function(t){return t&&t.length>0}(f)){f[0].multiple||0!==f.get(f.length-1).options.length||Tc(f,"",c.filterControlPlaceholder||" ",c.filterDefault);for(var l={},p=0;p=1){if(u.filterControl||r.options.filterControlContainer)if(r.options.filterControlContainer){var a=t(".bootstrap-table-filter-control-".concat(kc(u.field)));t.each(a,(function(r,e){var n=t(e);if(!n.is("[type=radio]")){var o=u.filterControlPlaceholder||"";n.attr("placeholder",o).val(u.filterDefault)}n.attr("data-field",u.field)})),o=!0}else{var c=u.filterControl.toLowerCase();n.push('
'),o=!0,u.searchable&&r.options.filterTemplate[c]&&n.push(r.options.filterTemplate[c](r,u,u.filterControlPlaceholder?u.filterControlPlaceholder:"",u.filterDefault))}else n.push('
');if(u.filterControl&&""!==u.filterDefault&&void 0!==u.filterDefault&&(mc.isEmptyObject(r.filterColumnsPartial)&&(r.filterColumnsPartial={}),u.field in r.filterColumnsPartial||(r.filterColumnsPartial[u.field]=u.filterDefault)),t.each(e.find("th"),(function(r,e){var o=t(e);if(o.data("field")===u.field)return o.find(".filter-control").remove(),o.find(".fht-cell").html(n.join("")),!1})),u.filterData&&"column"!==u.filterData.toLowerCase()){var f,l,s=function(t,r){for(var e=Object.keys(t),n=0;n0&&u[a].trim()&&i.find('option[value="'.concat(u[a],'"]')).attr("selected",!0);else u&&u.length>0&&u.trim()?(i.find("option[selected]").removeAttr("selected"),i.find('option[value="'.concat(u,'"]')).attr("selected",!0)):i.find("option[selected]").removeAttr("selected");clearTimeout(n.timeoutId||0),n.timeoutId=setTimeout((function(){r.onColumnSearch({currentTarget:n,keyCode:o})}),r.options.searchTimeOut)})),e.off("mouseup","input:not([type=radio])").on("mouseup","input:not([type=radio])",(function(e){var n=e.currentTarget,o=e.keyCode,i=t(n);""!==i.val()&&setTimeout((function(){""===i.val()&&(clearTimeout(n.timeoutId||0),n.timeoutId=setTimeout((function(){r.onColumnSearch({currentTarget:n,keyCode:o})}),r.options.searchTimeOut))}),1)})),e.off("change","input[type=radio]").on("change","input[type=radio]",(function(t){var e=t.currentTarget,n=t.keyCode;clearTimeout(e.timeoutId||0),e.timeoutId=setTimeout((function(){r.onColumnSearch({currentTarget:e,keyCode:n})}),r.options.searchTimeOut)})),e.find(".date-filter-control").length>0&&t.each(r.columns,(function(t,n){var o=n.filterDefault,i=n.filterControl,u=n.field,a=n.filterDatepickerOptions;if(void 0!==i&&"datepicker"===i.toLowerCase()){var c=e.find(".date-filter-control.bootstrap-table-filter-control-".concat(kc(u)));o&&c.value(o),a.min&&c.attr("min",a.min),a.max&&c.attr("max",a.max),a.step&&c.attr("step",a.step),a.pattern&&c.attr("pattern",a.pattern),c.on("change",(function(t){var e=t.currentTarget;clearTimeout(e.timeoutId||0),e.timeoutId=setTimeout((function(){r.onColumnSearch({currentTarget:e})}),r.options.searchTimeOut)}))}})),"server"!==r.options.sidePagination&&r.triggerSearch(),r.options.filterControlVisible||e.find(".filter-control, .no-filter-control").hide()):e.find(".filter-control, .no-filter-control").hide(),r.trigger("created-controls")}function Dc(r){r.options.height&&(0!==r.$tableContainer.find(".fixed-table-header table thead").length&&r.$header.children().find("th[data-field]").each((function(e,n){if("bs-checkbox"!==n.classList[0]){var o=t(n),i=o.data("field"),u=r.$tableContainer.find("th[data-field='".concat(i,"']")).not(o),a=o.find("input"),c=u.find("input");a.length>0&&c.length>0&&a.val()!==c.val()&&a.val(c.val())}})))}var Lc={func:function(t,r,e,n,o){var i=window[r].apply();for(var u in i)Tc(e,u,i[u],o);t.options.sortSelectOptions&&jc(e,n,t.options),Rc(t)},obj:function(t,r,e,n,o){var i=r.split("."),u=i.shift(),a=window[u];for(var c in i.length>0&&i.forEach((function(t){a=a[t]})),a)Tc(e,a[c],a[c],o);t.options.sortSelectOptions&&jc(e,n,t.options),Rc(t)},var:function(t,r,e,n,o){var i=window[r],u=Array.isArray(i);for(var a in i)Tc(e,u?i[a]:a,i[a],o,!0);t.options.sortSelectOptions&&jc(e,n,t.options),Rc(t)},url:function(r,e,n,o,i){t.ajax({url:e,dataType:"json",success:function(t){for(var e in t)Tc(n,e,t[e],i);r.options.sortSelectOptions&&jc(n,o,r.options),Rc(r)}})},json:function(t,r,e,n,o){var i=JSON.parse(r);for(var u in i)Tc(e,u,i[u],o);t.options.sortSelectOptions&&jc(e,n,t.options),Rc(t)}},_c=t.fn.bootstrapTable.utils;Object.assign(t.fn.bootstrapTable.defaults,{filterControl:!1,filterControlVisible:!0,filterControlMultipleSearch:!1,filterControlMultipleSearchDelimiter:",",filterControlSearchClear:!0,onColumnSearch:function(t,r){return!1},onCreatedControls:function(){return!1},alignmentSelectControlOptions:void 0,filterTemplate:{input:function(t,r,e,n){return _c.sprintf('',Cc(t),r.field,void 0===e?"":e,void 0===n?"":n)},select:function(t,r){return _c.sprintf('',Cc(t,!0),r.field,"","",function(t){switch(void 0===t?"left":t.toLowerCase()){case"left":default:return"ltr";case"right":return"rtl";case"auto":return"auto"}}(t.options.alignmentSelectControlOptions))},datepicker:function(t,r,e){return _c.sprintf('',Cc(t),r.field,void 0===e?"":e)}},searchOnEnterKey:!1,showFilterControlSwitch:!1,sortSelectOptions:!1,_valuesFilterControl:[],_initialized:!1,_isRendering:!1,_usingMultipleSelect:!1}),Object.assign(t.fn.bootstrapTable.columnDefaults,{filterControl:void 0,filterControlMultipleSelect:!1,filterControlMultipleSelectOptions:{},filterDataCollector:void 0,filterData:void 0,filterDatepickerOptions:{},filterStrictSearch:!1,filterStartsWithSearch:!1,filterControlPlaceholder:"",filterDefault:"",filterOrderBy:"asc",filterCustomSearch:void 0}),Object.assign(t.fn.bootstrapTable.events,{"column-search.bs.table":"onColumnSearch","created-controls.bs.table":"onCreatedControls"}),_c.assignIcons(t.fn.bootstrapTable.icons,"filterControlSwitchHide",{glyphicon:"glyphicon-zoom-out icon-zoom-out",fa:"fa-search-minus",bi:"bi-zoom-out","material-icons":"zoom_out"}),_c.assignIcons(t.fn.bootstrapTable.icons,"filterControlSwitchShow",{glyphicon:"glyphicon-zoom-in icon-zoom-in",fa:"fa-search-plus",bi:"bi-zoom-in","material-icons":"zoom_in"}),Object.assign(t.fn.bootstrapTable.locales,{formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"},formatClearSearch:function(){return"Clear filters"}}),Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales),t.fn.bootstrapTable.methods.push("triggerSearch"),t.fn.bootstrapTable.methods.push("clearFilterControl"),t.fn.bootstrapTable.methods.push("toggleFilterControl"),t.BootstrapTable=function(r){function o(){return function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this,o),e(this,o,arguments)}return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&a(t,r)}(o,r),n(o,[{key:"init",value:function(){var t=this;this.options.filterControl&&(this._valuesFilterControl=[],this._initialized=!1,this._usingMultipleSelect=!1,this._isRendering=!1,this.$el.on("reset-view.bs.table",_c.debounce((function(){Ac(t),Rc(t)}),3)).on("toggle.bs.table",_c.debounce((function(r,e){t._initialized=!1,e||(Ac(t),Rc(t),t._initialized=!0)}),1)).on("post-header.bs.table",_c.debounce((function(){Ac(t),Rc(t)}),3)).on("column-switch.bs.table",_c.debounce((function(){Rc(t),t.options.height&&t.fitHeader()}),1)).on("post-body.bs.table",_c.debounce((function(){t.options.height&&!t.options.filterControlContainer&&t.options.filterControlVisible&&xc(t),t.$tableLoading.css("top",t.$header.outerHeight()+1)}),1)).on("all.bs.table",(function(){Dc(t)}))),c(o,"init",this)([])}},{key:"initBody",value:function(){var t=this;c(o,"initBody",this)([]),this.options.filterControl&&setTimeout((function(){Ac(t),Rc(t)}),3)}},{key:"load",value:function(t){c(o,"load",this)([t]),this.options.filterControl&&(Ic(this,Sc(this)),Rc(this))}},{key:"initHeader",value:function(){c(o,"initHeader",this)([]),this.options.filterControl&&(Ic(this,Sc(this)),this._initialized=!0)}},{key:"initSearch",value:function(){var r=this,e=this,n=_c.isEmptyObject(e.filterColumnsPartial)?null:e.filterColumnsPartial;c(o,"initSearch",this)([]),"server"!==this.options.sidePagination&&null!==n&&(e.data=n?e.data.filter((function(o,i){var u=[],a=Object.keys(o),c=Object.keys(n),f=a.concat(c.filter((function(t){return!a.includes(t)})));return f.forEach((function(a){var c,f=e.columns[e.fieldsColumnsIndex[a]],l=n[a]||"",p=l.toLowerCase(),h=_c.unescapeHTML(_c.getItemField(o,a,!1));r.options.searchAccentNeutralise&&(p=_c.normalizeAccent(p));var v=[p];r.options.filterControlMultipleSearch&&(v=p.split(r.options.filterControlMultipleSearchDelimiter)),v.forEach((function(r){!0!==c&&(""===(r=r.trim())?c=!0:(f&&(f.searchFormatter||f._forceFormatter)&&(h=t.fn.bootstrapTable.utils.calculateObjectValue(f,e.header.formatters[t.inArray(a,e.header.fields)],[h,o,i],h)),-1!==t.inArray(a,e.header.fields)&&(null==h?c=!1:"object"===s(h)&&f.filterCustomSearch?u.push(e.isValueExpected(l,h,f,a)):"object"===s(h)&&Array.isArray(h)?h.forEach((function(t){c||(c=e.isValueExpected(r,t,f,a))})):"object"!==s(h)||Array.isArray(h)?"string"!=typeof h&&"number"!=typeof h&&"boolean"!=typeof h||(c=e.isValueExpected(r,h,f,a)):Object.values(h).forEach((function(t){c||(c=e.isValueExpected(r,t,f,a))})))))})),u.push(c)})),!u.includes(!1)})):e.data,e.unsortedData=f(e.data))}},{key:"isValueExpected",value:function(t,r,e,n){var o;"select"===e.filterControl&&(r=_c.removeHTML(r.toString().toLowerCase())),this.options.searchAccentNeutralise&&(r=_c.normalizeAccent(r)),o=e.filterStrictSearch||"select"===e.filterControl&&!1!==e.passed.filterStrictSearch?r.toString().toLowerCase()===t.toString().toLowerCase():e.filterStartsWithSearch?0==="".concat(r).toLowerCase().indexOf(t):"datepicker"===e.filterControl?new Date(r).getTime()===new Date(t).getTime():this.options.regexSearch?_c.regexCompare(r,t):"".concat(r).toLowerCase().includes(t);var i=/(?:(<=|=>|=<|>=|>|<)(?:\s+)?(\d+)?|(\d+)?(\s+)?(<=|=>|=<|>=|>|<))/gm.exec(t);if(i){var u=i[1]||"".concat(i[5],"l"),a=i[2]||i[3],c=parseInt(r,10),f=parseInt(a,10);switch(u){case">":case"f;break;case"<":case">l":o=c=l":case"=>l":o=c<=f;break;case">=":case"=>":case"<=l":case"==f}}if(e.filterCustomSearch){var l=_c.calculateObjectValue(e,e.filterCustomSearch,[t,r,n,this.options.data],!0);null!==l&&(o=l)}return o}},{key:"initColumnSearch",value:function(t){if(Pc(this),t)for(var r in this.filterColumnsPartial=t,this.updatePagination(),t)this.trigger("column-search",r,t[r])}},{key:"initToolbar",value:function(){this.showToolbar=this.showToolbar||this.options.showFilterControlSwitch,this.showSearchClearButton=this.options.filterControl&&this.options.showSearchClearButton,this.options.showFilterControlSwitch&&(this.buttons=Object.assign(this.buttons,{filterControlSwitch:{text:this.options.filterControlVisible?this.options.formatFilterControlSwitchHide():this.options.formatFilterControlSwitchShow(),icon:this.options.filterControlVisible?this.options.icons.filterControlSwitchHide:this.options.icons.filterControlSwitchShow,event:this.toggleFilterControl,attributes:{"aria-label":this.options.formatFilterControlSwitch(),title:this.options.formatFilterControlSwitch()}}})),c(o,"initToolbar",this)([])}},{key:"resetSearch",value:function(t){this.options.filterControl&&this.options.filterControlSearchClear&&this.options.showSearchClearButton&&this.clearFilterControl(),c(o,"resetSearch",this)([t])}},{key:"clearFilterControl",value:function(){if(this.options.filterControl){var r=this,e=this.$el.closest("table"),n=function(){var r=[],e=/bs\.table\.(filterControl|searchText)/g,n=document.cookie.match(e),o=localStorage;return n&&t.each(n,(function(e,n){var o=n;/./.test(o)&&(o=o.split(".").pop()),-1===t.inArray(o,r)&&r.push(o)})),o?(Object.keys(localStorage).forEach((function(t){e.test(t)&&(t=t.split(".").pop(),r.includes(t)||r.push(t))})),r):r}(),o=Oc(r),i=!1,u=0;if(t.each(r._valuesFilterControl,(function(t,r){i=!!i||""!==r.value,r.value=""})),t.each(o,(function(t,r){r.value=""})),Rc(r),clearTimeout(u),u=setTimeout((function(){n&&n.length>0&&t.each(n,(function(t,e){void 0!==r.deleteCookie&&r.deleteCookie(e)}))}),r.options.searchTimeOut),i&&o.length>0&&(this.filterColumnsPartial={},o.eq(0).trigger("INPUT"===this.tagName?"keyup":"change",{keyCode:13}),r.options.sortName!==e.data("sortName")||r.options.sortOrder!==e.data("sortOrder"))){var a=this.$header.find(_c.sprintf('[data-field="%s"]',t(o[0]).closest("table").data("sortName")));a.length>0&&(r.onSort({type:"keypress",currentTarget:a}),t(a).find(".sortable").trigger("click"))}}}},{key:"onColumnSearch",value:function(r){var e=this,n=r.currentTarget;wc(r.keyCode)||(Pc(this),this.options.cookie?this._filterControlValuesLoaded=!0:this.options.pageNumber=1,_c.isEmptyObject(this.filterColumnsPartial)&&(this.filterColumnsPartial={}),(this.options.searchOnEnterKey?Oc(this).toArray():[n]).forEach((function(r){var n=t(r),o=n.val(),i=o?o.trim():"",u=n.closest("[data-field]").data("field");e.trigger("column-search",u,i),i?e.filterColumnsPartial[u]=i:delete e.filterColumnsPartial[u]})),this.onSearch({currentTarget:n},!1))}},{key:"toggleFilterControl",value:function(){this.options.filterControlVisible=!this.options.filterControlVisible;var t=Sc(this).find(".filter-control, .no-filter-control");(this.options.filterControlVisible?t.show():(t.hide(),this.clearFilterControl()),this.options.height)&&(this.$tableContainer.find(".fixed-table-header table thead").find(".filter-control, .no-filter-control").toggle(this.options.filterControlVisible),xc(this));var r=this.options.showButtonIcons?this.options.filterControlVisible?this.options.icons.filterControlSwitchHide:this.options.icons.filterControlSwitchShow:"",e=this.options.showButtonText?this.options.filterControlVisible?this.options.formatFilterControlSwitchHide():this.options.formatFilterControlSwitchShow():"";this.$toolbar.find(">.columns").find(".filter-control-switch").html("".concat(_c.sprintf(this.constants.html.icon,this.options.iconsPrefix,r)," ").concat(e))}},{key:"triggerSearch",value:function(){Oc(this).each((function(){var r=t(this);r.is("select")?r.trigger("change"):r.trigger("keyup")}))}},{key:"_toggleColumn",value:function(t,r,e){this._initialized=!1,c(o,"_toggleColumn",this)([t,r,e]),Dc(this)}}])}(t.BootstrapTable)})); diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 5a456020e0f3..b2f232c1e645 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -110,5 +110,5 @@ "/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=3979929a3423ff35b96b1fc84299fdf3", "/css/dist/skins/skin-yellow.min.css": "/css/dist/skins/skin-yellow.min.css?id=3d8a3d2035ea28aaad4a703c2646f515", "/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=9def0b5d3b891ac3669b3b7aa7e805ce", - "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=ed9dc2e13cf495675067c4c7091b325a" + "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=678d920d390b6f4308e710fbd53e44eb" } diff --git a/public/vendor/scribe/css/theme-default.print.css b/public/vendor/scribe/css/theme-default.print.css new file mode 100644 index 000000000000..18ab760e753a --- /dev/null +++ b/public/vendor/scribe/css/theme-default.print.css @@ -0,0 +1,393 @@ +/* Copied from https://github.com/slatedocs/slate/blob/c4b4c0b8f83e891ca9fab6bbe9a1a88d5fe41292/stylesheets/print.css and unminified */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: bold +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: 0.67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -0.5em +} + +sub { + bottom: -0.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0 +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto +} + +input[type="search"] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: bold +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +.content h1, +.content h2, +.content h3, +.content h4, +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 14px +} + +.content h1, +.content h2, +.content h3, +.content h4 { + font-weight: bold +} + +.content pre, +.content code { + font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif; + font-size: 12px; + line-height: 1.5 +} + +.content pre, +.content code { + word-break: break-all; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +@font-face { + font-family: 'slate'; + src: url(../fonts/slate.eot?-syv14m); + src: url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"), url(../fonts/slate.woff2?-syv14m) format("woff2"), url(../fonts/slate.woff?-syv14m) format("woff"), url(../fonts/slate.ttf?-syv14m) format("truetype"), url(../fonts/slate.svg?-syv14m#slate) format("svg"); + font-weight: normal; + font-style: normal +} + +.content aside.warning:before, +.content aside.notice:before, +.content aside.success:before { + font-family: 'slate'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "\e600" +} + +.content aside.notice:before { + content: "\e602" +} + +.content aside.success:before { + content: "\e606" +} + +.tocify, +.toc-footer, +.lang-selector, +.search, +#nav-button { + display: none +} + +.tocify-wrapper>img { + margin: 0 auto; + display: block +} + +.content { + font-size: 12px +} + +.content pre, +.content code { + border: 1px solid #999; + border-radius: 5px; + font-size: 0.8em +} + +.content pre code { + border: 0 +} + +.content pre { + padding: 1.3em +} + +.content code { + padding: 0.2em +} + +.content table { + border: 1px solid #999 +} + +.content table tr { + border-bottom: 1px solid #999 +} + +.content table td, +.content table th { + padding: 0.7em +} + +.content p { + line-height: 1.5 +} + +.content a { + text-decoration: none; + color: #000 +} + +.content h1 { + font-size: 2.5em; + padding-top: 0.5em; + padding-bottom: 0.5em; + margin-top: 1em; + margin-bottom: 21px; + border: 2px solid #ccc; + border-width: 2px 0; + text-align: center +} + +.content h2 { + font-size: 1.8em; + margin-top: 2em; + border-top: 2px solid #ccc; + padding-top: 0.8em +} + +.content h1+h2, +.content h1+div+h2 { + border-top: none; + padding-top: 0; + margin-top: 0 +} + +.content h3, +.content h4 { + font-size: 0.8em; + margin-top: 1.5em; + margin-bottom: 0.8em; + text-transform: uppercase +} + +.content h5, +.content h6 { + text-transform: uppercase +} + +.content aside { + padding: 1em; + border: 1px solid #ccc; + border-radius: 5px; + margin-top: 1.5em; + margin-bottom: 1.5em; + line-height: 1.6 +} + +.content aside:before { + vertical-align: middle; + padding-right: 0.5em; + font-size: 14px +} diff --git a/public/vendor/scribe/css/theme-default.style.css b/public/vendor/scribe/css/theme-default.style.css new file mode 100644 index 000000000000..08f2e93a114b --- /dev/null +++ b/public/vendor/scribe/css/theme-default.style.css @@ -0,0 +1,1094 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: 'Open Sans', sans-serif; + font-size: 1.2em; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section { + display: block +} + +summary { + cursor: pointer; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: 700 +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: .67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -.5em +} + +sub { + bottom: -.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type=checkbox], +input[type=radio] { + box-sizing: border-box; + padding: 0 +} + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + height: auto +} + +input[type=search] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: .35em .625em .75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: 700 +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +body, +html { + font-family: 'Open Sans', Helvetica Neue, Helvetica, Arial, Microsoft Yahei, 微软雅黑, STXihei, 华文细黑, sans-serif; + font-size: 16px; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + font-family: 'Open Sans', Helvetica Neue, Helvetica, Arial, Microsoft Yahei, 微软雅黑, STXihei, 华文细黑, sans-serif; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + font-weight: 700 +} + +.content code, +.content pre { + font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; + font-size: 14px; + line-height: 1.5 +} + +.content code { + word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +.content aside.notice:before, +.content aside.success:before, +.content aside.warning:before, +.tocify-wrapper>.search:before { + font-family: 'Open Sans', sans-serif; + speak: none; + font-style: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "✋" +} + +.content aside.notice:before { + content: "ℹ" +} + +.content aside.success:before { + content: "✅" +} + +.tocify-wrapper>.search:before { + content: "🔎" +} + +.highlight .c, +.highlight .c1, +.highlight .cm, +.highlight .cs { + color: #909090 +} + +.highlight, +.highlight .w { + background-color: #292929 +} + +.hljs { + display: block; + overflow-x: auto; + padding: .5em; + background: #23241f +} + +.hljs, +.hljs-subst, +.hljs-tag { + color: #f8f8f2 +} + +.hljs-emphasis, +.hljs-strong { + color: #a8a8a2 +} + +.hljs-bullet, +.hljs-link, +.hljs-literal, +.hljs-number, +.hljs-quote, +.hljs-regexp { + color: #ae81ff +} + +.hljs-code, +.hljs-section, +.hljs-selector-class, +.hljs-title { + color: #a6e22e +} + +.hljs-strong { + font-weight: 700 +} + +.hljs-emphasis { + font-style: italic +} + +.hljs-attr, +.hljs-keyword, +.hljs-name, +.hljs-selector-tag { + color: #f92672 +} + +.hljs-attribute, +.hljs-symbol { + color: #66d9ef +} + +.hljs-class .hljs-title, +.hljs-params { + color: #f8f8f2 +} + +.hljs-addition, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-id, +.hljs-selector-pseudo, +.hljs-string, +.hljs-template-variable, +.hljs-type, +.hljs-variable { + color: #e6db74 +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e +} + +body, +html { + color: #333; + padding: 0; + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-color: whitesmoke; + height: 100%; + -webkit-text-size-adjust: none +} + +#toc>ul>li>a>span { + float: right; + background-color: #2484ff; + border-radius: 40px; + width: 20px +} + +.tocify-wrapper { + transition: left .3s ease-in-out; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + z-index: 30; + top: 0; + left: 0; + bottom: 0; + width: 230px; + background-color: #393939; + font-size: 13px; + font-weight: 700 +} + +.tocify-wrapper .lang-selector { + display: none +} + +.tocify-wrapper .lang-selector a { + padding-top: .5em; + padding-bottom: .5em +} + +.tocify-wrapper>img { + display: block +} + +.tocify-wrapper>.search { + position: relative +} + +.tocify-wrapper>.search input { + background: #393939; + border-width: 0 0 1px; + border-color: #666; + padding: 6px 0 6px 20px; + box-sizing: border-box; + margin: 10px 15px; + width: 200px; + outline: none; + color: #fff; + border-radius: 0 +} + +.tocify-wrapper>.search:before { + position: absolute; + top: 17px; + left: 15px; + color: #fff +} + +.tocify-wrapper img+.tocify { + margin-top: 20px +} + +.tocify-wrapper .search-results { + margin-top: 0; + box-sizing: border-box; + height: 0; + overflow-y: auto; + overflow-x: hidden; + transition-property: height, margin; + transition-duration: .18s; + transition-timing-function: ease-in-out; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .search-results.visible { + height: 30%; + margin-bottom: 1em +} + +.tocify-wrapper .search-results li { + margin: 1em 15px; + line-height: 1 +} + +.tocify-wrapper a { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .search-results a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li, +.tocify-wrapper .tocify-item>a { + padding: 0 15px; + display: block; + overflow-x: hidden; + white-space: nowrap; + text-overflow: ellipsis +} +.tocify-wrapper .tocify-item.level-3>a { + padding: 0 25px; +} + +.tocify-wrapper li, +.tocify-wrapper ul { + list-style: none; + margin: 0; + padding: 0; + line-height: 28px +} + +.tocify-wrapper li { + color: #fff; + transition-property: background; + transition-timing-function: linear; + transition-duration: .23s +} + +.tocify-wrapper .tocify-focus { + box-shadow: 0 1px 0 #000; + background-color: #2467af; + color: #fff; + font-weight: bold; +} + +.tocify-wrapper .tocify-subheader { + display: none; + background-color: #262626; + font-weight: 500; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .jets-searching .tocify-subheader, +.tocify-wrapper .tocify-subheader.visible { + display: block; +} + +.tocify-wrapper .tocify-subheader .tocify-item>a { + padding-left: 25px; + font-size: 12px +} + +.tocify-wrapper .tocify-subheader .tocify-item.level-3>a { + padding-left: 35px; +} + +.tocify-wrapper .tocify-subheader>li:last-child { + box-shadow: none +} + +.tocify-wrapper .toc-footer { + padding: 1em 0; + margin-top: 1em; + border-top: 1px dashed #666 +} + +.tocify-wrapper .toc-footer a, +.tocify-wrapper .toc-footer li { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .toc-footer a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li { + font-size: .8em; + line-height: 1.7; + text-decoration: none +} + +#nav-button { + padding: 0 1.5em 5em 0; + display: none; + position: fixed; + top: 0; + left: 0; + z-index: 100; + color: #000; + text-decoration: none; + font-weight: 700; + opacity: .7; + line-height: 16px; + transition: left .3s ease-in-out +} + +#nav-button span { + display: block; + padding: 6px; + background-color: rgba(234, 242, 246, .7); + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: rotate(-90deg) translate(-100%); + transform: rotate(-90deg) translate(-100%); + border-radius: 0 0 0 5px +} + +#nav-button img { + height: 16px; + vertical-align: bottom +} + +#nav-button:hover { + opacity: 1 +} + +#nav-button.open { + left: 230px +} + +.page-wrapper { + margin-left: 230px; + position: relative; + z-index: 10; + background-color: #eaf2f6; + min-height: 100%; + padding-bottom: 1px +} + +.page-wrapper .dark-box { + width: 50%; + background-color: #393939; + position: absolute; + right: 0; + top: 0; + bottom: 0 +} + +.page-wrapper .lang-selector { + position: fixed; + z-index: 50; + border-bottom: 5px solid #393939 +} + +.lang-selector { + background-color: #222; + width: 100%; + font-weight: 700 +} + +.lang-selector button { + display: block; + float: left; + color: #fff; + text-decoration: none; + padding: 0 10px; + line-height: 30px; + outline: 0; + background: transparent; + border: none; +} + +.lang-selector button:active, +.lang-selector button:hover, +.lang-selector button:focus { + background-color: #111; + color: #fff +} + +.lang-selector button.active { + background-color: #393939; + color: #fff +} + +.lang-selector:after { + content: ''; + clear: both; + display: block +} + +.content { + position: relative; + z-index: 30 +} + +.content:after { + content: ''; + display: block; + clear: both +} + +.content>aside, +.content>details, +.content>dl, +.content>h1, +.content>h2, +.content>h3, +.content>h4, +.content>h5, +.content>h6, +.content>ol, +.content>p, +.content>table, +.content>ul, +.content>div, +.content>form>aside, +.content>form>details, +.content>form>h1, +.content>form>h2, +.content>form>h3, +.content>form>h4, +.content>form>h5, +.content>form>h6, +.content>form>p, +.content>form>table, +.content>form>ul, +.content>form>div { + margin-right: 50%; + padding: 0 28px; + box-sizing: border-box; + display: block; + text-shadow: 0 1px 0 #fff +} + +.content>ol, +.content>ul { + padding-left: 43px +} + +.content>div, +.content>h1, +.content>h2 { + clear: both +} + +.content h1 { + font-size: 30px; + padding-top: .5em; + padding-bottom: .5em; + border-bottom: 1px solid #ccc; + margin-bottom: 21px; + margin-top: 2em; + border-top: 1px solid #ddd; + background-image: linear-gradient(180deg, #fff, #f9f9f9) +} + +.content div:first-child+h1, +.content h1:first-child { + border-top-width: 0; + margin-top: 0 +} + +.content h2 { + font-size: 20px; + margin-top: 4em; + margin-bottom: 0; + border-top: 1px solid #ccc; + padding-top: 1.2em; + padding-bottom: 1.2em; + background-image: linear-gradient(180deg, hsla(0, 0%, 100%, .4), hsla(0, 0%, 100%, 0)) +} + +.content h1+div+h2, +.content h1+h2 { + margin-top: -21px; + border-top: none +} + +.content h3, +.content h4, +.content h5, +.content h6 { + font-size: 15px; + margin-top: 2.5em; + margin-bottom: .8em +} + +.content h4, +.content h5, +.content h6 { + font-size: 10px +} + +.content hr { + margin: 2em 0; + border-top: 2px solid #393939; + border-bottom: 2px solid #eaf2f6 +} + +.content table { + margin-bottom: 1em; + overflow: auto +} + +.content table td, +.content table th { + text-align: left; + vertical-align: top; + line-height: 1.6 +} + +.content table th { + padding: 5px 10px; + border-bottom: 1px solid #ccc; + vertical-align: bottom +} + +.content table td { + padding: 10px +} + +.content table tr:last-child { + border-bottom: 1px solid #ccc +} + +.content table tr:nth-child(odd)>td { + background-color: #ebf3f6 +} + +.content table tr:nth-child(even)>td { + background-color: #ebf2f6 +} + +.content dt { + font-weight: 700 +} + +.content dd { + margin-left: 15px +} + +.content dd, +.content dt, +.content li, +.content p { + line-height: 1.6; + margin-top: 0 +} + +.content img { + max-width: 100% +} + +.content code { + padding: 3px; + border-radius: 3px +} + +.content pre>code { + background-color: transparent; + padding: 0 +} + +.content aside { + padding-top: 1em; + padding-bottom: 1em; + margin-top: 1.5em; + margin-bottom: 1.5em; + background: #292929; + line-height: 1.6; + color: #c8c8c8; + text-shadow: none; +} + +.content aside.info { + background: #8fbcd4; + text-shadow: 0 1px 0 #a0c6da; + color: initial; +} + +.content aside.warning { + background-color: #c97a7e; + text-shadow: 0 1px 0 #d18e91; + color: initial; +} + +.content aside.success { + background-color: #6ac174; + text-shadow: 0 1px 0 #80ca89; + color: initial; +} + +.content aside:before { + vertical-align: middle; + padding-right: .5em; + font-size: 14px +} + +.content .search-highlight { + padding: 2px; + margin: -2px; + border-radius: 4px; + border: 1px solid #f7e633; + text-shadow: 1px 1px 0 #666; + background: linear-gradient(to top left, #f7e633, #f1d32f) +} + +.content blockquote, +.content pre { + background-color: #292929; + color: #fff; + padding: 1.5em 28px; + margin: 0; + width: 50%; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0 1px 2px rgba(0, 0, 0, .4) +} + +.content blockquote pre.sf-dump, +.content pre pre.sf-dump { + width: 100%; +} + +.content .annotation { + background-color: #292929; + color: #fff; + padding: 0 28px; + margin: 0; + width: 50%; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0 1px 2px rgba(0, 0, 0, .4) +} + +.content .annotation pre { + padding: 0 0; + width: 100%; + float: none; +} + +.content blockquote>p, +.content pre>p { + margin: 0 +} + +.content blockquote a, +.content pre a { + color: #fff; + text-decoration: none; + border-bottom: 1px dashed #ccc +} + +.content blockquote>p { + background-color: #1c1c1c; + border-radius: 5px; + padding: 13px; + color: #ccc; + border-top: 1px solid #000; + border-bottom: 1px solid #404040 +} + +@media (max-width:930px) { + .tocify-wrapper { + left: -230px + } + .tocify-wrapper.open { + left: 0 + } + .page-wrapper { + margin-left: 0 + } + #nav-button { + display: block + } + .tocify-wrapper .tocify-item>a { + padding-top: .3em; + padding-bottom: .3em + } +} + +@media (max-width:700px) { + .dark-box { + display: none + } + .tocify-wrapper .lang-selector { + display: block + } + .page-wrapper .lang-selector { + display: none + } + .content>aside, + .content>details, + .content>dl, + .content>h1, + .content>h2, + .content>h3, + .content>h4, + .content>h5, + .content>h6, + .content>ol, + .content>p, + .content>table, + .content>ul, + .content>div, + .content>form>aside, + .content>form>details, + .content>form>h1, + .content>form>h2, + .content>form>h3, + .content>form>h4, + .content>form>h5, + .content>form>h6, + .content>form>p, + .content>form>table, + .content>form>ul, + .content>form>div { + margin-right: 0; + } + .content blockquote, + .content pre { + float: none; + width: auto + } + .content .annotation { + float: none; + width: auto + } +} + +.badge { + padding: 1px 9px 2px; + white-space: nowrap; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; + color: #ffffff; + text-shadow: none !important; + font-weight: bold; +} + +.badge.badge-darkred { + background-color: darkred; +} + +.badge.badge-red { + background-color: red; +} + +.badge.badge-blue { + background-color: blue; +} + +.badge.badge-darkblue { + background-color: darkblue; +} + +.badge.badge-green { + background-color: green; +} + +.badge.badge-darkgoldenrod { + background-color: darkgoldenrod; +} + +.badge.badge-darkgreen { + background-color: darkgreen; +} + +.badge.badge-purple { + background-color: purple; +} + +.badge.badge-black { + background-color: black; +} + +.badge.badge-grey { + background-color: grey; +} + +.fancy-heading-panel { + background-color: lightgrey; + border-radius: 5px; + padding-left: 5px !important; + padding-top: 5px !important; + padding-bottom: 5px !important; + margin-left: 25px; + margin-right: 10px; + width: 47%; +} + +@media screen and (max-width: 700px) { + .fancy-heading-panel { + width: 95%; + } + +} + +button { + border: none; +} + +* { + /* Foreground, Background */ + scrollbar-color: #3c4c67 transparent; +} +*::-webkit-scrollbar { /* Background */ + width: 10px; + height: 10px; + background: transparent; +} + +*::-webkit-scrollbar-thumb { /* Foreground */ + background: #626161; +} diff --git a/public/vendor/scribe/images/navbar.png b/public/vendor/scribe/images/navbar.png new file mode 100644 index 000000000000..df38e90d87e1 Binary files /dev/null and b/public/vendor/scribe/images/navbar.png differ diff --git a/public/vendor/scribe/js/theme-default-5.3.0.js b/public/vendor/scribe/js/theme-default-5.3.0.js new file mode 100644 index 000000000000..31c845141c23 --- /dev/null +++ b/public/vendor/scribe/js/theme-default-5.3.0.js @@ -0,0 +1,149 @@ +document.addEventListener('DOMContentLoaded', function() { + const updateHash = function (id) { + window.location.hash = `#${id}`; + }; + + const navButton = document.getElementById('nav-button'); + const menuWrapper = document.querySelector('.tocify-wrapper'); + function toggleSidebar(event) { + event.preventDefault(); + if (menuWrapper) { + menuWrapper.classList.toggle('open'); + navButton.classList.toggle('open'); + } + } + function closeSidebar() { + if (menuWrapper) { + menuWrapper.classList.remove('open'); + navButton.classList.remove('open'); + } + } + navButton.addEventListener('click', toggleSidebar); + + window.hljs.highlightAll(); + + const wrapper = document.getElementById('toc'); + // https://jets.js.org/ + window.jets = new window.Jets({ + // *OR - Selects elements whose values contains at least one part of search substring + searchSelector: '*OR', + searchTag: '#input-search', + contentTag: '#toc li', + didSearch: function(term) { + wrapper.classList.toggle('jets-searching', String(term).length > 0) + }, + // map these accent keys to plain values + diacriticsMap: { + a: 'ÀÁÂÃÄÅàáâãäåĀāąĄ', + c: 'ÇçćĆčČ', + d: 'đĐďĎ', + e: 'ÈÉÊËèéêëěĚĒēęĘ', + i: 'ÌÍÎÏìíîïĪī', + l: 'łŁ', + n: 'ÑñňŇńŃ', + o: 'ÒÓÔÕÕÖØòóôõöøŌō', + r: 'řŘ', + s: 'ŠšśŚ', + t: 'ťŤ', + u: 'ÙÚÛÜùúûüůŮŪū', + y: 'ŸÿýÝ', + z: 'ŽžżŻźŹ' + } + }); + + function hashChange() { + const currentItems = document.querySelectorAll('.tocify-subheader.visible, .tocify-item.tocify-focus'); + Array.from(currentItems).forEach((elem) => { + elem.classList.remove('visible', 'tocify-focus'); + }); + + const currentTag = document.querySelector(`a[href="${window.location.hash}"]`); + if (currentTag) { + const parent = currentTag.closest('.tocify-subheader'); + if (parent) { + parent.classList.add('visible'); + } + + const siblings = currentTag.closest('.tocify-header'); + if (siblings) { + Array.from(siblings.querySelectorAll('.tocify-subheader')).forEach((elem) => { + elem.classList.add('visible'); + }); + } + + currentTag.parentElement.classList.add('tocify-focus'); + + // wait for dom changes to be done + setTimeout(() => { + currentTag.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }); + // only close the sidebar on level-2 events + if (currentTag.parentElement.classList.contains('level-2')) { + closeSidebar(); + } + }, 1500); + } + } + + let languages = JSON.parse(document.body.getAttribute('data-languages')); + // Support a key => value object where the key is the name, or an array of strings where the value is the name + if (!Array.isArray(languages)) { + languages = Object.values(languages); + } + // if there is no language use the first one + const currentLanguage = window.localStorage.getItem('language') || languages[0]; + const languageStyle = document.getElementById('language-style'); + const langSelector = document.querySelectorAll('.lang-selector button.lang-button'); + + function setActiveLanguage(newLanguage) { + window.localStorage.setItem('language', newLanguage); + if (!languageStyle) { + return; + } + + const newStyle = languages.map((language) => { + return language === newLanguage + // the current one should be visible + ? `body .content .${language}-example pre { display: block; }` + // the inactive one should be hidden + : `body .content .${language}-example pre { display: none; }`; + }).join(`\n`); + + Array.from(langSelector).forEach((elem) => { + elem.classList.toggle('active', elem.getAttribute('data-language-name') === newLanguage); + }); + + const activeHash = window.location.hash.slice(1); + + languageStyle.innerHTML = newStyle; + + setTimeout(() => { + updateHash(activeHash); + }, 200); + } + + setActiveLanguage(currentLanguage); + + Array.from(langSelector).forEach((elem) => { + elem.addEventListener('click', () => { + const newLanguage = elem.getAttribute('data-language-name'); + setActiveLanguage(newLanguage); + }); + }); + + window.addEventListener('hashchange', hashChange, false); + + const divs = document.querySelectorAll('.content h1[id], .content h2[id]'); + + document.addEventListener('scroll', () => { + divs.forEach(item => { + const rect = item.getBoundingClientRect(); + if (rect.top > 0 && rect.top < 150) { + const location = window.location.toString().split('#')[0]; + history.replaceState(null, null, location + '#' + item.id); + hashChange(); + } + }); + }); + + hashChange(); +}); diff --git a/public/vendor/scribe/js/tryitout-5.3.0.js b/public/vendor/scribe/js/tryitout-5.3.0.js new file mode 100644 index 000000000000..2a1d2b8a9356 --- /dev/null +++ b/public/vendor/scribe/js/tryitout-5.3.0.js @@ -0,0 +1,289 @@ +window.abortControllers = {}; + +function cacheAuthValue() { + // Whenever the auth header is set for one endpoint, cache it for the others + window.lastAuthValue = ''; + let authInputs = document.querySelectorAll(`.auth-value`) + authInputs.forEach(el => { + el.addEventListener('input', (event) => { + window.lastAuthValue = event.target.value; + authInputs.forEach(otherInput => { + if (otherInput === el) return; + // Don't block the main thread + setTimeout(() => { + otherInput.value = window.lastAuthValue; + }, 0); + }); + }); + }); +} + +window.addEventListener('DOMContentLoaded', cacheAuthValue); + +function getCookie(name) { + if (!document.cookie) { + return null; + } + + const cookies = document.cookie.split(';') + .map(c => c.trim()) + .filter(c => c.startsWith(name + '=')); + + if (cookies.length === 0) { + return null; + } + + return decodeURIComponent(cookies[0].split('=')[1]); +} + +function tryItOut(endpointId) { + document.querySelector(`#btn-tryout-${endpointId}`).hidden = true; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`).hidden = false; + executeBtn.disabled = false; + + // Show all input fields + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'block'); + + if (document.querySelector(`#form-${endpointId}`).dataset.authed === "1") { + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = false); + } + // Expand all nested fields + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = true); +} + +function cancelTryOut(endpointId) { + if (window.abortControllers[endpointId]) { + window.abortControllers[endpointId].abort(); + delete window.abortControllers[endpointId]; + } + + document.querySelector(`#btn-tryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.hidden = true; + executeBtn.textContent = executeBtn.dataset.initialText; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = true; + // Hide inputs + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'none'); + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = false); + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = true); + + document.querySelector('#execution-results-' + endpointId).hidden = true; + document.querySelector('#execution-error-' + endpointId).hidden = true; + + // Revert to sample code blocks + document.querySelector('#example-requests-' + endpointId).hidden = false; + document.querySelector('#example-responses-' + endpointId).hidden = false; +} + +function makeAPICall(method, path, body = {}, query = {}, headers = {}, endpointId = null) { + console.log({endpointId, path, body, query, headers}); + + if (!(body instanceof FormData) && typeof body !== "string") { + body = JSON.stringify(body) + } + + const url = new URL(window.tryItOutBaseUrl + '/' + path.replace(/^\//, '')); + + // We need this function because if you try to set an array or object directly to a URLSearchParams object, + // you'll get [object Object] or the array.toString() + function addItemToSearchParamsObject(key, value, searchParams) { + if (Array.isArray(value)) { + value.forEach((v, i) => { + // Append {filters: [first, second]} as filters[0]=first&filters[1]second + addItemToSearchParamsObject(key + '[' + i + ']', v, searchParams); + }) + } else if (typeof value === 'object' && value !== null) { + Object.keys(value).forEach((i) => { + // Append {filters: {name: first}} as filters[name]=first + addItemToSearchParamsObject(key + '[' + i + ']', value[i], searchParams); + }); + } else { + searchParams.append(key, value); + } + } + + Object.keys(query) + .forEach(key => addItemToSearchParamsObject(key, query[key], url.searchParams)); + + window.abortControllers[endpointId] = new AbortController(); + + return fetch(url, { + method, + headers, + body: method === 'GET' ? undefined : body, + signal: window.abortControllers[endpointId].signal, + referrer: window.tryItOutBaseUrl, + mode: 'cors', + credentials: 'same-origin', + }) + .then(response => Promise.all([response.status, response.statusText, response.text(), response.headers])); +} + +function hideCodeSamples(endpointId) { + document.querySelector('#example-requests-' + endpointId).hidden = true; + document.querySelector('#example-responses-' + endpointId).hidden = true; +} + +function handleResponse(endpointId, response, status, headers) { + hideCodeSamples(endpointId); + + // Hide error views + document.querySelector('#execution-error-' + endpointId).hidden = true; + + const responseContentEl = document.querySelector('#execution-response-content-' + endpointId); + + // Check if the response contains Laravel's dd() default dump output + const isLaravelDump = response.includes('Sfdump'); + + // If it's a Laravel dd() dump, use innerHTML to render it safely + if (isLaravelDump) { + responseContentEl.innerHTML = response === '' ? responseContentEl.dataset.emptyResponseText : response; + } else { + // Otherwise, stick to textContent for regular responses + responseContentEl.textContent = response === '' ? responseContentEl.dataset.emptyResponseText : response; + } + + // Prettify it if it's JSON + let isJson = false; + try { + const jsonParsed = JSON.parse(response); + if (jsonParsed !== null) { + isJson = true; + response = JSON.stringify(jsonParsed, null, 4); + responseContentEl.textContent = response; + } + } catch (e) { + + } + + isJson && window.hljs.highlightElement(responseContentEl); + const statusEl = document.querySelector('#execution-response-status-' + endpointId); + statusEl.textContent = ` (${status})`; + document.querySelector('#execution-results-' + endpointId).hidden = false; + statusEl.scrollIntoView({behavior: "smooth", block: "center"}); +} + +function handleError(endpointId, err) { + hideCodeSamples(endpointId); + // Hide response views + document.querySelector('#execution-results-' + endpointId).hidden = true; + + // Show error views + let errorMessage = err.message || err; + const $errorMessageEl = document.querySelector('#execution-error-message-' + endpointId); + $errorMessageEl.textContent = errorMessage + $errorMessageEl.textContent; + const errorEl = document.querySelector('#execution-error-' + endpointId); + errorEl.hidden = false; + errorEl.scrollIntoView({behavior: "smooth", block: "center"}); + +} + +async function executeTryOut(endpointId, form) { + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.textContent = executeBtn.dataset.loadingText; + executeBtn.disabled = true; + executeBtn.scrollIntoView({behavior: "smooth", block: "center"}); + + let body; + let setter; + if (form.dataset.hasfiles === "1") { + body = new FormData(); + setter = (name, value) => body.append(name, value); + } else if (form.dataset.isarraybody === "1") { + body = []; + setter = (name, value) => _.set(body, name, value); + } else { + body = {}; + setter = (name, value) => _.set(body, name, value); + } + const bodyParameters = form.querySelectorAll('input[data-component=body]'); + bodyParameters.forEach(el => { + let value = el.value; + + if (el.type === 'number' && typeof value === 'string') { + value = parseFloat(value); + } + + if (el.type === 'file' && el.files[0]) { + setter(el.name, el.files[0]); + return; + } + + if (el.type !== 'radio') { + if (value === "" && el.required === false) { + // Don't include empty optional values in the request + return; + } + setter(el.name, value); + return; + } + + if (el.checked) { + value = (value === 'false') ? false : true; + setter(el.name, value); + } + }); + + const query = {}; + const queryParameters = form.querySelectorAll('input[data-component=query]'); + queryParameters.forEach(el => { + if (el.type !== 'radio' || (el.type === 'radio' && el.checked)) { + if (el.value === '') { + // Don't include empty values in the request + return; + } + + _.set(query, el.name, el.value); + } + }); + + let path = form.dataset.path; + const urlParameters = form.querySelectorAll('input[data-component=url]'); + urlParameters.forEach(el => (path = path.replace(new RegExp(`\\{${el.name}\\??}`), el.value))); + + const headers = Object.fromEntries(Array.from(form.querySelectorAll('input[data-component=header]')) + .map(el => [el.name, el.value])); + + // When using FormData, the browser sets the correct content-type + boundary + let method = form.dataset.method; + if (body instanceof FormData) { + delete headers['Content-Type']; + + // When using FormData with PUT or PATCH, use method spoofing so PHP can access the post body + if (['PUT', 'PATCH'].includes(form.dataset.method)) { + method = 'POST'; + setter('_method', form.dataset.method); + } + } + + let preflightPromise = Promise.resolve(); + if (window.useCsrf && window.csrfUrl) { + preflightPromise = makeAPICall('GET', window.csrfUrl).then(() => { + headers['X-XSRF-TOKEN'] = getCookie('XSRF-TOKEN'); + }); + } + + return preflightPromise.then(() => makeAPICall(method, path, body, query, headers, endpointId)) + .then(([responseStatus, statusText, responseContent, responseHeaders]) => { + handleResponse(endpointId, responseContent, responseStatus, responseHeaders) + }) + .catch(err => { + if (err.name === "AbortError") { + console.log("Request cancelled"); + return; + } + console.log("Error while making request: ", err); + handleError(endpointId, err); + }) + .finally(() => { + executeBtn.disabled = false; + executeBtn.textContent = executeBtn.dataset.initialText; + }); +} diff --git a/resources/lang/en-US/admin/accessories/message.php b/resources/lang/en-US/admin/accessories/message.php index f60d41957b3f..2c0955d0b2a1 100644 --- a/resources/lang/en-US/admin/accessories/message.php +++ b/resources/lang/en-US/admin/accessories/message.php @@ -5,6 +5,7 @@ 'does_not_exist' => 'The accessory [:id] does not exist.', 'not_found' => 'That accessory was not found.', 'assoc_users' => 'This accessory currently has :count items checked out to users. Please check in the accessories and and try again. ', + 'invalid_category_type' => 'The category is not an accessory category.', 'create' => array( 'error' => 'The accessory was not created, please try again.', diff --git a/resources/views/scribe/index.blade.php b/resources/views/scribe/index.blade.php new file mode 100644 index 000000000000..f9ce0847cd49 --- /dev/null +++ b/resources/views/scribe/index.blade.php @@ -0,0 +1,41075 @@ + + + + + + + Evolução local de snipe-it API Documentation + + + + + + + + + + + + + + + + + + + + + + + + +
+ + MENU + navbar-image + + +
+ + +
+ + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+
+

Introduction

+

This documentation aims to provide the information you need to work with the Snipe-IT JSON REST API.

+ + + +

Authenticating requests

+

To authenticate requests, include an Authorization header with the value "Bearer your-token".

+

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

+

If your account has API access enabled, you can generate a token by clicking in the top right account menu and clicking API tokens.

+ +

Accessories

+ + + +

Show Accessory Checkouts

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/accessories/1/checkedout" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories/1/checkedout"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories/1/checkedout';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories/1/checkedout'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=QwqPH3txF8T3F17zuocUxlzlAourAOPvfWbLeuj9; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/accessories/{accessory}/checkedout +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ accessory   +integer  +   + +
+

The accessory. Example: 1

+
+
+ +

Checkout Accessory

+ +

+requires authentication +

+ +

If Slack is enabled and/or asset acceptance is enabled, it will also +trigger a Slack message and send an email.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/accessories/1/checkout" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories/1/checkout"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories/1/checkout';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories/1/checkout'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/accessories/{accessory_id}/checkout +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ accessory_id   +integer  +   + +
+

The ID of the accessory. Example: 1

+
+
+ +

Checkin Accessory

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/accessories/1/checkin" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories/1/checkin"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories/1/checkin';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories/1/checkin'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/accessories/{accessory}/checkin +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ accessory   +integer  +   + +
+

The accessory. Example: 1

+
+
+ +

Selectlist

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/accessories/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=kCGqdKxExAZopEwv7oy5l7SRnyqXXXDCU5Jyu7jU; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/accessories/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ search   +string  +optional   + +
+

A search term to filter results by name.

+
+
+ +

List accessories

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/accessories?search=keyboard&filter%5B%3Cfieldname%3E%5D=architecto&company_id=1&category_id=1&manufacturer_id=1&supplier_id=1&location_id=1&notes=For+office+use+only&offset=0&limit=50&sort=created_at&order=desc" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories"
+);
+
+const params = {
+    "search": "keyboard",
+    "filter[<fieldname>]": "architecto",
+    "company_id": "1",
+    "category_id": "1",
+    "manufacturer_id": "1",
+    "supplier_id": "1",
+    "location_id": "1",
+    "notes": "For office use only",
+    "offset": "0",
+    "limit": "50",
+    "sort": "created_at",
+    "order": "desc",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'search' => 'keyboard',
+            'filter[<fieldname>]' => 'architecto',
+            'company_id' => '1',
+            'category_id' => '1',
+            'manufacturer_id' => '1',
+            'supplier_id' => '1',
+            'location_id' => '1',
+            'notes' => 'For office use only',
+            'offset' => '0',
+            'limit' => '50',
+            'sort' => 'created_at',
+            'order' => 'desc',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories'
+params = {
+  'search': 'keyboard',
+  'filter[<fieldname>]': 'architecto',
+  'company_id': '1',
+  'category_id': '1',
+  'manufacturer_id': '1',
+  'supplier_id': '1',
+  'location_id': '1',
+  'notes': 'For office use only',
+  'offset': '0',
+  'limit': '50',
+  'sort': 'created_at',
+  'order': 'desc',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=2HABGaRbPqMGeiNPKWTPnN0AwM4t7W2yN4TFOJqm; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/accessories +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ search   +string  +optional   + +
+

A search term to filter results by. Example: keyboard

+
+
+ filter[<fieldname>]   +string  +optional   + +
+

A field to filter by. Example Example: architecto

+
+
+ company_id   +integer  +optional   + +
+

Filter by company ID. Example: 1

+
+
+ category_id   +integer  +optional   + +
+

Filter by category ID. Example: 1

+
+
+ manufacturer_id   +integer  +optional   + +
+

Filter by manufacturer ID. Example: 1

+
+
+ supplier_id   +integer  +optional   + +
+

Filter by supplier ID. Example: 1

+
+
+ location_id   +integer  +optional   + +
+

Filter by location ID. Example: 1

+
+
+ notes   +string  +optional   + +
+

Filter by notes. Example: For office use only

+
+
+ offset   +integer  +optional   + +
+

The number of items to skip before starting to collect the result set. Example: 0

+
+
+ limit   +integer  +optional   + +
+

The number of items to return. Example: 50

+
+
+ sort   +string  +optional   + +
+

The field to sort by. Example: created_at

+
+
+ order   +string  +optional   + +
+

The order to sort by. Example: desc

+
+
+ +

Create Accessory

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/accessories" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"Apple Bluetooth Keyboard\",
+    \"qty\": 10,
+    \"category_id\": 1
+}"
+
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "Apple Bluetooth Keyboard",
+    "qty": 10,
+    "category_id": 1
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'name' => 'Apple Bluetooth Keyboard',
+            'qty' => 10,
+            'category_id' => 1,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories'
+payload = {
+    "name": "Apple Bluetooth Keyboard",
+    "qty": 10,
+    "category_id": 1
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers, json=payload)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/accessories +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ name   +string  +   + +
+

The name of the accessory. Example: Apple Bluetooth Keyboard

+
+
+ qty   +integer  +   + +
+

The number of accessories to create. Example: 10

+
+
+ category_id   +integer  +   + +
+

The ID of the category to assign this accessory to. Example: 1

+
+
+ image   +file  +optional   + +
+ +
+
+ +

Show Accessory

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/accessories/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories/1';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=1Tv5gekmNofKNDwolDkOEcEH9JUfM9rX0PaTFfWI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/accessories/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the accessory. Example: 1

+
+
+ +

Update accessory.

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/accessories/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories/1';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/accessories/{id} +

+

+ PATCH + api/v1/accessories/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the accessory. Example: 1

+
+
+ +

Delete Accessory

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/accessories/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories/1';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/accessories/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the accessory. Example: 1

+
+
+ +

Account

+ + + +

Display Requested Assets

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/account/requests" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/account/requests"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/account/requests';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/account/requests'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=qIWm6chVMaJXUcKG9E8EHhnb7F9wQT14AjEraiFE; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/account/requests +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Display Accepted EULAs

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/account/eulas" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/account/eulas"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/account/eulas';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/account/eulas'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=nhItaWioeRLO0dKBgjno1X73ttHn50uXRQ7L7BAc; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/account/eulas +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Store Asset Request

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/account/request/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/account/request/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/account/request/1';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/account/request/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/account/request/{asset_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +integer  +   + +
+

The ID of the asset. Example: 1

+
+
+ +

Cancel Asset Request

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/account/request/1/cancel" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/account/request/1/cancel"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/account/request/1/cancel';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/account/request/1/cancel'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/account/request/{asset_id}/cancel +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +integer  +   + +
+

The ID of the asset. Example: 1

+
+
+ +

Create API token

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/account/personal-access-tokens +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show API tokens

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=yUjH3zpUXM18qZVCvvVEp1y5zfNNok8NctCrwGof; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/account/personal-access-tokens +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Delete API token

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/account/personal-access-tokens/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/account/personal-access-tokens/{tokenId} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ tokenId   +string  +   + +
+

Example: architecto

+
+
+ +

Assets

+ + + +

Show Requestable Assets

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/account/requestable/hardware" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/account/requestable/hardware"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/account/requestable/hardware';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/account/requestable/hardware'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=9bkg2C4WhllCWmz0TI3hJlkOmzBIHtZh8c9EhOQi; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/account/requestable/hardware +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

List Assets

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/reports/depreciation?assigned_type=user&byod=1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/reports/depreciation"
+);
+
+const params = {
+    "assigned_type": "user",
+    "byod": "1",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/reports/depreciation';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'assigned_type' => 'user',
+            'byod' => '1',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/reports/depreciation'
+params = {
+  'assigned_type': 'user',
+  'byod': '1',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=1RCnTHUFbqwTIQa5a3jw9Z163XXINM8alyMsLk0F; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/reports/depreciation +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ action   +string  +optional   + +
+

The action to filter by: audits, checkins.

+
+
+ upcoming_status   +string  +optional   + +
+

The status to filter by: due, overdue, due-or-overdue.

+
+
+ status   +string  +optional   + +
+

The asset status to filter by: RTD, Deployed, Pending, Undeployable, Archived, Requestable.

+
+
+ status_id   +integer  +optional   + +
+

The asset status ID to filter by.

+
+
+ asset_tag   +string  +optional   + +
+

The asset tag to filter by.

+
+
+ serial   +string  +optional   + +
+

The serial number to filter by.

+
+
+ requestable   +boolean  +optional   + + +
+

Filter by requestable assets.

+
+
+ model_id   +integer  +optional   + +
+

The model ID or IDs to filter by.

+
+
+ category_id   +integer  +optional   + +
+

The category ID to filter by.

+
+
+ location_id   +integer  +optional   + +
+

The location ID to filter by.

+
+
+ rtd_location_id   +integer  +optional   + +
+

The RTD location ID to filter by.

+
+
+ supplier_id   +integer  +optional   + +
+

The supplier ID to filter by.

+
+
+ asset_eol_date   +string  +optional   + +
+

date The asset end-of-life date to filter by.

+
+
+ assigned_to   +integer  +optional   + +
+

The user ID or department ID the asset is assigned to.

+
+
+ assigned_type   +string  +optional   + +
+

The type of assignment, either 'user' or 'asset' or 'location'. Example: user

+
+
+ company_id   +integer  +optional   + +
+

The company ID to filter by.

+
+
+ manufacturer_id   +integer  +optional   + +
+

The manufacturer ID to filter by.

+
+
+ depreciation_id   +integer  +optional   + +
+

The depreciation ID to filter by.

+
+
+ byod   +boolean  +optional   + + +
+

Filter by BYOD assets. Example: true

+
+
+ order_number   +string  +optional   + +
+

The order number to filter by. Example:

+
+
+ search   +string  +optional   + +
+

A text string to search for. Example:

+
+
+ filter   +string  +optional   + +
+

A JSON object of key/value pairs to filter by.

+
+
+ +

Selectlist

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/hardware/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=0J6iH1gl0c15eGQzbr0AXYKNPWvATyX8x6OsoSrW; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/hardware/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ $search   +string  +optional   + +
+

String to search on.

+
+
+ $companyId   +integer  +optional   + +
+

Company ID to filter by.

+
+
+ $assetStatusType   +string  +optional   + +
+

The asset status type to filter by: RTD.

+
+
+ +

Licenses Assigned to Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/hardware/architecto/licenses?%24assetId=1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/architecto/licenses"
+);
+
+const params = {
+    "$assetId": "1",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto/licenses';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            '$assetId' => '1',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto/licenses'
+params = {
+  '$assetId': '1',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=fG7jXtcAYCvTOFyyGxGIuUODAbj1PT5ZAaug4SRy; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/hardware/{asset_id}/licenses +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +string  +   + +
+

The ID of the asset. Example: architecto

+
+

Query Parameters

+
+ $assetId   +integer  +   + +
+

The asset ID. Example: 1

+
+
+ +

Lookup by Tag

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/hardware/bytag/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/bytag/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/bytag/1';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/bytag/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=JUM59W5u4D1Jdj1Ai98JgFlM3Ts8igVm7P7mFeXB; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/hardware/bytag/{tag} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ tag   +string  +   + +
+

The asset tag. Example: 1

+
+
+ +

Lookup by Tag

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/hardware/bytag/|{+-0p" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/bytag/|{+-0p"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/bytag/|{+-0p';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/bytag/|{+-0p'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=VJrksR9BVpURY1sWO0ib6MKfDb6nIxMa2pVIQr5p; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/hardware/bytag/{any} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ any   +string  +   + +
+

Example: |{+-0p

+
+
+ tag   +string  +   + +
+

The asset tag. Example: 1

+
+
+ +

Checkout by Asset Tag

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/hardware/bytag/architecto/checkout" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/bytag/architecto/checkout"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/bytag/architecto/checkout';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/bytag/architecto/checkout'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/hardware/bytag/{any}/checkout +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ any   +string  +   + +
+

Example: architecto

+
+
+ +

Checkin by Asset Tag

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/hardware/bytag/architecto/checkin" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/bytag/architecto/checkin"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/bytag/architecto/checkin';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/bytag/architecto/checkin'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/hardware/bytag/{any}/checkin +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ any   +string  +   + +
+

Example: architecto

+
+
+ +

Checkin by Asset Tag

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/hardware/checkinbytag" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/checkinbytag"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/checkinbytag';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/checkinbytag'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/hardware/checkinbytag +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Lookup by Serial

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/hardware/byserial/|{+-0p" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/byserial/|{+-0p"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/byserial/|{+-0p';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/byserial/|{+-0p'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=llOTTmFchjax52EyYJzjxhiyZiEXIBU0ZcfnoN6T; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/hardware/byserial/{any} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ any   +string  +   + +
+

Example: |{+-0p

+
+
+ serial   +string  +optional   + +
+

Example: architecto

+
+
+ +

List Assets

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/hardware/audit|audits|checkins/due|overdue|due-or-overdue?assigned_type=user&byod=1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/audit|audits|checkins/due|overdue|due-or-overdue"
+);
+
+const params = {
+    "assigned_type": "user",
+    "byod": "1",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/audit|audits|checkins/due|overdue|due-or-overdue';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'assigned_type' => 'user',
+            'byod' => '1',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/audit|audits|checkins/due|overdue|due-or-overdue'
+params = {
+  'assigned_type': 'user',
+  'byod': '1',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=jun9NCBvUvQJXjBPXHEgZB9NPzF1mS6NTwzDmHDe; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/hardware/{action}/{upcoming_status} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ action   +string  +   + +
+

Example: audit|audits|checkins

+
+
+ upcoming_status   +string  +   + +
+

Example: due|overdue|due-or-overdue

+
+

Query Parameters

+
+ action   +string  +optional   + +
+

The action to filter by: audits, checkins.

+
+
+ upcoming_status   +string  +optional   + +
+

The status to filter by: due, overdue, due-or-overdue.

+
+
+ status   +string  +optional   + +
+

The asset status to filter by: RTD, Deployed, Pending, Undeployable, Archived, Requestable.

+
+
+ status_id   +integer  +optional   + +
+

The asset status ID to filter by.

+
+
+ asset_tag   +string  +optional   + +
+

The asset tag to filter by.

+
+
+ serial   +string  +optional   + +
+

The serial number to filter by.

+
+
+ requestable   +boolean  +optional   + + +
+

Filter by requestable assets.

+
+
+ model_id   +integer  +optional   + +
+

The model ID or IDs to filter by.

+
+
+ category_id   +integer  +optional   + +
+

The category ID to filter by.

+
+
+ location_id   +integer  +optional   + +
+

The location ID to filter by.

+
+
+ rtd_location_id   +integer  +optional   + +
+

The RTD location ID to filter by.

+
+
+ supplier_id   +integer  +optional   + +
+

The supplier ID to filter by.

+
+
+ asset_eol_date   +string  +optional   + +
+

date The asset end-of-life date to filter by.

+
+
+ assigned_to   +integer  +optional   + +
+

The user ID or department ID the asset is assigned to.

+
+
+ assigned_type   +string  +optional   + +
+

The type of assignment, either 'user' or 'asset' or 'location'. Example: user

+
+
+ company_id   +integer  +optional   + +
+

The company ID to filter by.

+
+
+ manufacturer_id   +integer  +optional   + +
+

The manufacturer ID to filter by.

+
+
+ depreciation_id   +integer  +optional   + +
+

The depreciation ID to filter by.

+
+
+ byod   +boolean  +optional   + + +
+

Filter by BYOD assets. Example: true

+
+
+ order_number   +string  +optional   + +
+

The order number to filter by. Example:

+
+
+ search   +string  +optional   + +
+

A text string to search for. Example:

+
+
+ filter   +string  +optional   + +
+

A JSON object of key/value pairs to filter by.

+
+
+ +

Audit Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/hardware/audit" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/audit"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/audit';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/audit'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/hardware/audit +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Audit Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/hardware/1/audit" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/1/audit"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/1/audit';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/1/audit'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/hardware/{asset_id}/audit +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +integer  +   + +
+

The ID of the asset. Example: 1

+
+
+ +

Checkin Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/hardware/architecto/checkin" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/architecto/checkin"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto/checkin';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto/checkin'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/hardware/{id}/checkin +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the hardware. Example: architecto

+
+
+ +

Checkout Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/hardware/architecto/checkout" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/architecto/checkout"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto/checkout';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto/checkout'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/hardware/{id}/checkout +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the hardware. Example: architecto

+
+
+ +

Restore Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/hardware/architecto/restore" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/architecto/restore"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto/restore';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto/restore'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/hardware/{asset_id}/restore +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +string  +   + +
+

The ID of the asset. Example: architecto

+
+
+ +

List Assets Assigned to Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/assets" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/assets"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/assets';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/assets'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=DIPJZUWSuyNUFLyBNwFMer4zkxMi0tReW3dy4QPK; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/hardware/{asset_id}/assigned/assets +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +integer  +   + +
+

The ID of the asset. Example: 1

+
+
+ +

List Accessories Assigned to Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/accessories" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/accessories"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/accessories';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/accessories'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=F9Wogg2lFVX0DlkB6ZfYreUAmJeGi8jFA5O8VrAI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/hardware/{asset_id}/assigned/accessories +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +integer  +   + +
+

The ID of the asset. Example: 1

+
+
+ +

List Components Assigned to Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/components" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/components"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/components';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/1/assigned/components'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=bKDaNYTiCn9wzCQETCLfjwUEaIXEpCWfmHVEAfUz; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/hardware/{asset_id}/assigned/components +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +integer  +   + +
+

The ID of the asset. Example: 1

+
+
+ +

Update Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PATCH \
+    "https://snipe-it.test/api/v1/api/v1/hardware/1?model_id=1&company_id=1&rtd_location_id=1&last_audit_date=2023-12-31&image=%28binary%29" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/1"
+);
+
+const params = {
+    "model_id": "1",
+    "company_id": "1",
+    "rtd_location_id": "1",
+    "last_audit_date": "2023-12-31",
+    "image": "(binary)",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PATCH",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/1';
+$response = $client->patch(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'model_id' => '1',
+            'company_id' => '1',
+            'rtd_location_id' => '1',
+            'last_audit_date' => '2023-12-31',
+            'image' => '(binary)',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/1'
+params = {
+  'model_id': '1',
+  'company_id': '1',
+  'rtd_location_id': '1',
+  'last_audit_date': '2023-12-31',
+  'image': '(binary)',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PATCH', url, headers=headers, params=params)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PATCH + api/v1/hardware/{asset_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +integer  +   + +
+

The ID of the asset. Example: 1

+
+

Query Parameters

+
+ model_id   +integer  +optional   + +
+

The model ID to associate the asset with. Example: 1

+
+
+ company_id   +integer  +optional   + +
+

The company ID to associate the asset with. Example: 1

+
+
+ rtd_location_id   +integer  +optional   + +
+

The RTD location ID to associate the asset with. Example: 1

+
+
+ last_audit_date   +string  +optional   + +
+

date The last audit date for the asset. Example: 2023-12-31

+
+
+ image   +string  +optional   + +
+

file The image file to upload for the asset. Example: (binary)

+
+
+ +

Update Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/hardware/1?model_id=1&company_id=1&rtd_location_id=1&last_audit_date=2023-12-31&image=%28binary%29" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/1"
+);
+
+const params = {
+    "model_id": "1",
+    "company_id": "1",
+    "rtd_location_id": "1",
+    "last_audit_date": "2023-12-31",
+    "image": "(binary)",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/1';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'model_id' => '1',
+            'company_id' => '1',
+            'rtd_location_id' => '1',
+            'last_audit_date' => '2023-12-31',
+            'image' => '(binary)',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/1'
+params = {
+  'model_id': '1',
+  'company_id': '1',
+  'rtd_location_id': '1',
+  'last_audit_date': '2023-12-31',
+  'image': '(binary)',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers, params=params)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/hardware/{asset_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +integer  +   + +
+

The ID of the asset. Example: 1

+
+

Query Parameters

+
+ model_id   +integer  +optional   + +
+

The model ID to associate the asset with. Example: 1

+
+
+ company_id   +integer  +optional   + +
+

The company ID to associate the asset with. Example: 1

+
+
+ rtd_location_id   +integer  +optional   + +
+

The RTD location ID to associate the asset with. Example: 1

+
+
+ last_audit_date   +string  +optional   + +
+

date The last audit date for the asset. Example: 2023-12-31

+
+
+ image   +string  +optional   + +
+

file The image file to upload for the asset. Example: (binary)

+
+
+ +

List Assets

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/hardware?assigned_type=user&byod=1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware"
+);
+
+const params = {
+    "assigned_type": "user",
+    "byod": "1",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'assigned_type' => 'user',
+            'byod' => '1',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware'
+params = {
+  'assigned_type': 'user',
+  'byod': '1',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=OpEopdxJjQ1quNst6C1aE9VzEFgonGA6WTKO283D; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/hardware +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ action   +string  +optional   + +
+

The action to filter by: audits, checkins.

+
+
+ upcoming_status   +string  +optional   + +
+

The status to filter by: due, overdue, due-or-overdue.

+
+
+ status   +string  +optional   + +
+

The asset status to filter by: RTD, Deployed, Pending, Undeployable, Archived, Requestable.

+
+
+ status_id   +integer  +optional   + +
+

The asset status ID to filter by.

+
+
+ asset_tag   +string  +optional   + +
+

The asset tag to filter by.

+
+
+ serial   +string  +optional   + +
+

The serial number to filter by.

+
+
+ requestable   +boolean  +optional   + + +
+

Filter by requestable assets.

+
+
+ model_id   +integer  +optional   + +
+

The model ID or IDs to filter by.

+
+
+ category_id   +integer  +optional   + +
+

The category ID to filter by.

+
+
+ location_id   +integer  +optional   + +
+

The location ID to filter by.

+
+
+ rtd_location_id   +integer  +optional   + +
+

The RTD location ID to filter by.

+
+
+ supplier_id   +integer  +optional   + +
+

The supplier ID to filter by.

+
+
+ asset_eol_date   +string  +optional   + +
+

date The asset end-of-life date to filter by.

+
+
+ assigned_to   +integer  +optional   + +
+

The user ID or department ID the asset is assigned to.

+
+
+ assigned_type   +string  +optional   + +
+

The type of assignment, either 'user' or 'asset' or 'location'. Example: user

+
+
+ company_id   +integer  +optional   + +
+

The company ID to filter by.

+
+
+ manufacturer_id   +integer  +optional   + +
+

The manufacturer ID to filter by.

+
+
+ depreciation_id   +integer  +optional   + +
+

The depreciation ID to filter by.

+
+
+ byod   +boolean  +optional   + + +
+

Filter by BYOD assets. Example: true

+
+
+ order_number   +string  +optional   + +
+

The order number to filter by. Example:

+
+
+ search   +string  +optional   + +
+

A text string to search for. Example:

+
+
+ filter   +string  +optional   + +
+

A JSON object of key/value pairs to filter by.

+
+
+ +

Create Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/hardware" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/hardware +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/hardware/architecto?%24assetId=1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/architecto"
+);
+
+const params = {
+    "$assetId": "1",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            '$assetId' => '1',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto'
+params = {
+  '$assetId': '1',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=DivpAbTSWduaC7mBZSElSCp2pLYXeny0mPAaJbuq; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/hardware/{hardware} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ hardware   +string  +   + +
+

The hardware. Example: architecto

+
+

Query Parameters

+
+ $assetId   +integer  +   + +
+

The asset ID. Example: 1

+
+
+ +

Delete Asset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/hardware/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/hardware/{hardware} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ hardware   +string  +   + +
+

The hardware. Example: architecto

+
+
+ +

Generate Label by Asset Tag

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/hardware/labels" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/hardware/labels"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/hardware/labels';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/hardware/labels'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/hardware/labels +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Categories

+ + + +

Selectlist

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/categories/architecto/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/categories/architecto/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/categories/architecto/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/categories/architecto/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=Wy5FSLyBn1xpLQy08hVrBlmoANJohF4ZIzpEcIZy; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/categories/{item_type}/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ item_type   +string  +   + +
+

Example: architecto

+
+
+ +

List Categories

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/categories" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/categories"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/categories';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/categories'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=ErvltKvHZdVobMWCabFa83cWRCOTTtIgAPf7kLWS; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/categories +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Create Category

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/categories" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/categories"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/categories';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/categories'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/categories +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Category

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/categories/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/categories/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/categories/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/categories/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=V2YFWiG0waCLFesMFr3kkLb0Io41yz4MPzVEfytq; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/categories/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the category. Example: architecto

+
+
+ +

Update Category

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/categories/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/categories/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/categories/architecto';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/categories/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/categories/{id} +

+

+ PATCH + api/v1/categories/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the category. Example: architecto

+
+
+ +

Delete Category

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/categories/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/categories/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/categories/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/categories/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/categories/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the category. Example: architecto

+
+
+ +

Companies

+ + + +

Selectlist

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/companies/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/companies/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/companies/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/companies/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=IqjgsK1DVTQS5qlZI7l96rTJH0m95aILfWx6eAS2; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/companies/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

List Companies

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/companies" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/companies"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/companies';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/companies'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=cEVlfAwtjQtu004rU9aEgFwcozHbApb3l0gEpL3C; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/companies +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Create Company

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/companies" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/companies"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/companies';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/companies'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/companies +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Company

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/companies/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/companies/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/companies/1';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/companies/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=YqczMPKZfCp7CKkULGsRoDqufIWQ9yGkni3Cto4R; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/companies/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the company. Example: 1

+
+
+ +

Update Company

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/companies/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/companies/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/companies/1';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/companies/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/companies/{id} +

+

+ PATCH + api/v1/companies/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the company. Example: 1

+
+
+ +

Delete Company

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/companies/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/companies/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/companies/1';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/companies/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/companies/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the company. Example: 1

+
+
+ +

Components

+ + + +

Component Assets

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/components/3/assets" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/components/3/assets"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/components/3/assets';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/components/3/assets'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=wiPOiV7Xae1fyzS2Jv3w9d060WDRgnET70IrBjTj; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/components/{component}/assets +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ component   +integer  +   + +
+

The component. Example: 3

+
+
+ +

Checkin Component

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/components/3/checkin" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/components/3/checkin"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/components/3/checkin';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/components/3/checkin'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/components/{id}/checkin +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the component. Example: 3

+
+
+ +

Checkout Component

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/components/3/checkout" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"assigned_to\": \"architecto\"
+}"
+
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/components/3/checkout"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "assigned_to": "architecto"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/components/3/checkout';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'assigned_to' => 'architecto',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/components/3/checkout'
+payload = {
+    "assigned_to": "architecto"
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers, json=payload)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/components/{id}/checkout +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the component. Example: 3

+
+

Body Parameters

+
+ assigned_to   +string  +   + +
+

The id of an existing record in the assets table. Example: architecto

+
+
+ assigned_qty   +string  +optional   + +
+ +
+
+ +

List Categories

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/components" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/components"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/components';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/components'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=vXpBDH4e4puagaeAOAWHnpHEOQ7rCwXKeEDeGn5W; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/components +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Create Component

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/components" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/components"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/components';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/components'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/components +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Component

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/components/3" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/components/3"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/components/3';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/components/3'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=mIFtURJNZowrCIpSMAMYNVYW5XvKIReOCIJ57XgL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/components/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the component. Example: 3

+
+
+ +

Update Component

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/components/3" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/components/3"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/components/3';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/components/3'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/components/{id} +

+

+ PATCH + api/v1/components/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the component. Example: 3

+
+
+ +

Delete Component

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/components/3" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/components/3"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/components/3';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/components/3'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/components/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the component. Example: 3

+
+
+ +

Consumables

+ + + +

Selectlist

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/consumables/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/consumables/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/consumables/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/consumables/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=9SzZeaG6J8yoJtsrcqY5kJPcLvX7ObZeYK0JivkB; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/consumables/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

User Assignments

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/consumables/1/users" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/consumables/1/users"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/consumables/1/users';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/consumables/1/users'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=eO7NKRGNCHJ34NL6woGI5Ux80o2tg9rIBW0LuGGd; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/consumables/{id}/users +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the consumable. Example: 1

+
+
+ +

Checkout Consumable

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/consumables/1/checkout" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/consumables/1/checkout"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/consumables/1/checkout';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/consumables/1/checkout'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/consumables/{consumable}/checkout +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ consumable   +integer  +   + +
+

The consumable. Example: 1

+
+
+ +

List Consumables

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/consumables?filter=%7B%22company%22%3A%221%22%2C%22location%22%3A%222%22%7D&search=architecto&name=architecto&company_id=16&category_id=16&model_number=architecto&manufacturer_id=16&supplier_id=16&location_id=16&notes=architecto&sort=architecto&order=architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/consumables"
+);
+
+const params = {
+    "filter": "{"company":"1","location":"2"}",
+    "search": "architecto",
+    "name": "architecto",
+    "company_id": "16",
+    "category_id": "16",
+    "model_number": "architecto",
+    "manufacturer_id": "16",
+    "supplier_id": "16",
+    "location_id": "16",
+    "notes": "architecto",
+    "sort": "architecto",
+    "order": "architecto",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/consumables';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'filter' => '{"company":"1","location":"2"}',
+            'search' => 'architecto',
+            'name' => 'architecto',
+            'company_id' => '16',
+            'category_id' => '16',
+            'model_number' => 'architecto',
+            'manufacturer_id' => '16',
+            'supplier_id' => '16',
+            'location_id' => '16',
+            'notes' => 'architecto',
+            'sort' => 'architecto',
+            'order' => 'architecto',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/consumables'
+params = {
+  'filter': '{"company":"1","location":"2"}',
+  'search': 'architecto',
+  'name': 'architecto',
+  'company_id': '16',
+  'category_id': '16',
+  'model_number': 'architecto',
+  'manufacturer_id': '16',
+  'supplier_id': '16',
+  'location_id': '16',
+  'notes': 'architecto',
+  'sort': 'architecto',
+  'order': 'architecto',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=WMv6quPUXaLnZTkEXk5aBwdTDMuUgt7fQTd6uLZf; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/consumables +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ filter   +string  +optional   + +
+

A JSON encoded array of key/value pairs to filter results by. Example: {"company":"1","location":"2"}

+
+
+ search   +string  +optional   + +
+

A search term to filter results by. Example: architecto

+
+
+ name   +string  +optional   + +
+

Filter by exact name. Example: architecto

+
+
+ company_id   +integer  +optional   + +
+

Filter by exact company ID. Example: 16

+
+
+ category_id   +integer  +optional   + +
+

Filter by exact category ID. Example: 16

+
+
+ model_number   +string  +optional   + +
+

Filter by exact model number. Example: architecto

+
+
+ manufacturer_id   +integer  +optional   + +
+

Filter by exact manufacturer ID. Example: 16

+
+
+ supplier_id   +integer  +optional   + +
+

Filter by exact supplier ID. Example: 16

+
+
+ location_id   +integer  +optional   + +
+

Filter by exact location ID. Example: 16

+
+
+ notes   +string  +optional   + +
+

Filter by exact notes. Example: architecto

+
+
+ sort   +string  +optional   + +
+

The column to sort results by. Must be one of the following: id, name, order_number, min_amt, purchase_date, purchase_cost, company, category, model_number, item_no, manufacturer, location, qty, image, company, location, category, supplier, manufacturer. Default is created_at. Example: architecto

+
+
+ order   +string  +optional   + +
+

The order to sort results by. Must be one of the following: asc, desc. Default is desc. Example: architecto

+
+
+ +

Store a newly created resource in storage.

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/consumables" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/consumables"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/consumables';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/consumables'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/consumables +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Consumable

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/consumables/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/consumables/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/consumables/1';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/consumables/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=oTfWSAjrq9p5g7qEYt7eFY4Dl7io060HverF1daF; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/consumables/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the consumable. Example: 1

+
+
+ +

Update Consumable

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/consumables/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/consumables/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/consumables/1';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/consumables/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/consumables/{id} +

+

+ PATCH + api/v1/consumables/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the consumable. Example: 1

+
+
+ +

Delete Consumable

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/consumables/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/consumables/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/consumables/1';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/consumables/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/consumables/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the consumable. Example: 1

+
+
+ +

Custom Fields

+ + + +

Reorder Fields

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/fields/fieldsets/architecto/order" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fields/fieldsets/architecto/order"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fields/fieldsets/architecto/order';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fields/fieldsets/architecto/order'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/fields/fieldsets/{id}/order +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the fieldset. Example: architecto

+
+
+ +

Add Field to Fieldset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/fields/architecto/associate" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fields/architecto/associate"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fields/architecto/associate';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fields/architecto/associate'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/fields/{field}/associate +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ field   +string  +   + +
+

The field. Example: architecto

+
+
+ +

Remove Field from Fieldset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/fields/architecto/disassociate" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fields/architecto/disassociate"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fields/architecto/disassociate';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fields/architecto/disassociate'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/fields/{field}/disassociate +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ field   +string  +   + +
+

The field. Example: architecto

+
+
+ +

List Custom Fields

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/fields" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fields"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fields';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fields'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=MTrOxDhLsWMBw1aLYKK9q1GA3VjT43PhCRp7KBa9; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/fields +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Create Field

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/fields" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fields"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fields';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fields'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/fields +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Field

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/fields/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fields/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fields/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fields/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=jdlBn85i46xp3MdUb7Dbb1igonFqeCNdzQwTOmnl; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/fields/{field} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ field   +string  +   + +
+

The field. Example: architecto

+
+
+ +

Update Field

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/fields/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fields/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fields/architecto';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fields/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/fields/{field} +

+

+ PATCH + api/v1/fields/{field} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ field   +string  +   + +
+

The field. Example: architecto

+
+
+ +

Delete Field

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/fields/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fields/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fields/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fields/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/fields/{field} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ field   +string  +   + +
+

The field. Example: architecto

+
+
+ +

Custom Fieldsets

+

Show Fields in Fieldset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/fieldsets/architecto/fields" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fieldsets/architecto/fields"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fieldsets/architecto/fields';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fieldsets/architecto/fields'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/fieldsets/{fieldset}/fields +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ fieldset   +string  +   + +
+

The fieldset. Example: architecto

+
+
+ +

Fields in Fieldset with Default Values for Model

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/fieldsets/architecto/fields/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fieldsets/architecto/fields/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fieldsets/architecto/fields/architecto';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fieldsets/architecto/fields/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/fieldsets/{fieldset}/fields/{model} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ fieldset   +string  +   + +
+

The fieldset. Example: architecto

+
+
+ model   +string  +   + +
+

Example: architecto

+
+
+ +

List Fieldsets

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/fieldsets" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fieldsets"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fieldsets';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fieldsets'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=DtH1Q5VV2HTu9NhlX5CxdYBImN4ZqxolMxRmhDyk; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/fieldsets +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Create Fieldset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/fieldsets" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fieldsets"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fieldsets';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fieldsets'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/fieldsets +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Fieldset and Fields

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/fieldsets/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fieldsets/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fieldsets/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fieldsets/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=haApTgbAdDCFdvIN3hU8DshPXbfKMRdlXqBMBKdM; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/fieldsets/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the fieldset. Example: architecto

+
+
+ +

Update Fieldset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/fieldsets/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fieldsets/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fieldsets/architecto';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fieldsets/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/fieldsets/{id} +

+

+ PATCH + api/v1/fieldsets/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the fieldset. Example: architecto

+
+
+ +

Delete Fieldset

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/fieldsets/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/fieldsets/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/fieldsets/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/fieldsets/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/fieldsets/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the fieldset. Example: architecto

+
+
+ +

Departments

+ + + +

Selectlist

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/departments/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/departments/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/departments/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/departments/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=0Ld2mnJEdBRIaREXQ37xGTuIS9SWJ4pT3WC79wc3; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/departments/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

List Departments

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/departments?search=IT&name=IT&company_id=1&manager_id=16&location_id=1&sort=name&order=asc&offset=0&limit=50" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/departments"
+);
+
+const params = {
+    "search": "IT",
+    "name": "IT",
+    "company_id": "1",
+    "manager_id": "16",
+    "location_id": "1",
+    "sort": "name",
+    "order": "asc",
+    "offset": "0",
+    "limit": "50",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/departments';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'search' => 'IT',
+            'name' => 'IT',
+            'company_id' => '1',
+            'manager_id' => '16',
+            'location_id' => '1',
+            'sort' => 'name',
+            'order' => 'asc',
+            'offset' => '0',
+            'limit' => '50',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/departments'
+params = {
+  'search': 'IT',
+  'name': 'IT',
+  'company_id': '1',
+  'manager_id': '16',
+  'location_id': '1',
+  'sort': 'name',
+  'order': 'asc',
+  'offset': '0',
+  'limit': '50',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=A3I9GYZHlismQEeDjfx7XM9EFccWImskxth6x9OH; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/departments +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ search   +string  +optional   + +
+

Search term to filter results. Example: IT

+
+
+ name   +string  +optional   + +
+

Filter by exact department name. Example: IT

+
+
+ company_id   +integer  +optional   + +
+

Filter by exact company ID. Example: 1

+
+
+ manager_id   +integer  +optional   + +
+

Filter by exact manager (user) ID. Example: Example: 16

+
+
+ location_id   +integer  +optional   + +
+

Filter by exact location ID. Example: 1

+
+
+ sort   +string  +optional   + +
+

Column to sort results by. Allowed values: id, name, image, users_count, notes, created_at, updated_at, location, manager, company. Default: created_at. Example: name

+
+
+ order   +string  +optional   + +
+

Order of sorted results. Allowed values: asc, desc. Default: desc. Example: asc

+
+
+ offset   +integer  +optional   + +
+

Offset/starting position of the results. Default: 0. Example: 0

+
+
+ limit   +integer  +optional   + +
+

Limit the number of results returned. Default: 25. Maximum: 100. Example: 50

+
+
+ +

Create Department

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/departments" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/departments"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/departments';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/departments'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/departments +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Department

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/departments/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/departments/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/departments/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/departments/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=f5nA1I31NqT4m4T3BeSDmKt2LuBQs7KtcZZNRDKq; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/departments/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the department. Example: architecto

+
+
+ +

Update Department

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/departments/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/departments/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/departments/architecto';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/departments/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/departments/{id} +

+

+ PATCH + api/v1/departments/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the department. Example: architecto

+
+
+ +

Delete Department

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/departments/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/departments/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/departments/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/departments/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/departments/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the department. Example: architecto

+
+
+ +

Depreciations

+ + + +

List Depreciations

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/depreciations" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/depreciations"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/depreciations';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/depreciations'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=TaZAI56rS9h74YByHlSA9ZrXGsTjQD4onwKaqiFF; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/depreciations +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Create Depreciation

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/depreciations" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/depreciations"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/depreciations';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/depreciations'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/depreciations +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Depreciation

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/depreciations/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/depreciations/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/depreciations/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/depreciations/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=qFky4u180BfuHQB1d4a5A7K5Q4MOHcVdqELFA4ow; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/depreciations/{depreciation_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ depreciation_id   +string  +   + +
+

The ID of the depreciation. Example: architecto

+
+
+ +

Update Depreciation

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/depreciations/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/depreciations/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/depreciations/architecto';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/depreciations/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/depreciations/{depreciation_id} +

+

+ PATCH + api/v1/depreciations/{depreciation_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ depreciation_id   +string  +   + +
+

The ID of the depreciation. Example: architecto

+
+
+ +

Delete Depreciation

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/depreciations/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/depreciations/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/depreciations/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/depreciations/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/depreciations/{depreciation_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ depreciation_id   +string  +   + +
+

The ID of the depreciation. Example: architecto

+
+
+ +

Files

+ + + +

List Files for an Object

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=HfR9HTwK8SuIGE2OuiaImTbUpBhp1HtUBHMeilHy; expires=Sat, 18 Oct 2025 20:42:53 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/{object_type}/{id}/files +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ object_type   +string  +   + +
+

Example: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users

+
+
+ id   +string  +   + +
+

The ID of the {object type}. Example: architecto

+
+
+ +

Display File

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=N688uqN5BWG2WKvT3v6TxAJAl1Il05lzaTycQ40x; expires=Sat, 18 Oct 2025 20:42:53 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/{object_type}/{id}/files/{file_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ object_type   +string  +   + +
+

Example: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users

+
+
+ id   +string  +   + +
+

The ID of the {object type}. Example: architecto

+
+
+ file_id   +string  +   + +
+

The ID of the file. Example: architecto

+
+
+ +

Upload File to an Object

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/{object_type}/{id}/files +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ object_type   +string  +   + +
+

Example: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users

+
+
+ id   +string  +   + +
+

The ID of the {object type}. Example: architecto

+
+
+ +

Delete File

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files/architecto/delete" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files/architecto/delete"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files/architecto/delete';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users/architecto/files/architecto/delete'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/{object_type}/{id}/files/{file_id}/delete +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ object_type   +string  +   + +
+

Example: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users

+
+
+ id   +string  +   + +
+

The ID of the {object type}. Example: architecto

+
+
+ file_id   +string  +   + +
+

The ID of the file. Example: architecto

+
+
+ +

Imports

+ + + +

Process Import

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/imports/process/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/imports/process/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/imports/process/architecto';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/imports/process/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/imports/process/{import} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ import   +string  +   + +
+

Example: architecto

+
+
+ +

List Import Files

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/imports" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/imports"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/imports';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/imports'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=lj8o7doJNMvuEIVNyZKehmNRHGnHDPN2afmwMD6i; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/imports +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Save Import File

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/imports" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/imports"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/imports';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/imports'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/imports +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Delete Import File

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/imports/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/imports/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/imports/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/imports/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/imports/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the import. Example: architecto

+
+
+ +

Labels

+ + + +

Show Label

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/labels/|{+-0p" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/labels/|{+-0p"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/labels/|{+-0p';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/labels/|{+-0p'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=rEUcrmsA92vKXWOMa9gjkZircoRHtwh2NGzh46Ym; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/labels/{name} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ name   +string  +   + +
+

Example: |{+-0p

+
+
+ +

List Labels

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/labels" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/labels"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/labels';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/labels'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=uOfOzJMa5lIhRnkxrSV7W6Lh6At2caeav8pgRq3i; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/labels +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Licenses

+ + + +

Selectlist

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/licenses/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/licenses/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/licenses/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/licenses/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=WCUA668q64Tb6nEAAMH6QDj0KxiWwfnKfCVC1WL5; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/licenses/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

List Licenses

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/licenses?status=%3Fstatus%3Dactive&company_id=1&name=Microsoft+365&product_key=W269N&order_number=12345&purchase_order=PO12345&license_name=John+Doe&license_email=john.d" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/licenses"
+);
+
+const params = {
+    "status": "?status=active",
+    "company_id": "1",
+    "name": "Microsoft 365",
+    "product_key": "W269N",
+    "order_number": "12345",
+    "purchase_order": "PO12345",
+    "license_name": "John Doe",
+    "license_email": "john.d",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/licenses';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'status' => '?status=active',
+            'company_id' => '1',
+            'name' => 'Microsoft 365',
+            'product_key' => 'W269N',
+            'order_number' => '12345',
+            'purchase_order' => 'PO12345',
+            'license_name' => 'John Doe',
+            'license_email' => 'john.d',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/licenses'
+params = {
+  'status': '?status=active',
+  'company_id': '1',
+  'name': 'Microsoft 365',
+  'product_key': 'W269N',
+  'order_number': '12345',
+  'purchase_order': 'PO12345',
+  'license_name': 'John Doe',
+  'license_email': 'john.d',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=FsSfFEzLbFI2oqcTFwXV523YHYRteVgVbhwU1KjU; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/licenses +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ status   +string  +optional   + +
+

Filter by license status. Options: active, inactive, expiring Example: ?status=active

+
+
+ company_id   +integer  +optional   + +
+

Filter by exact company ID. Example: 1

+
+
+ name   +string  +optional   + +
+

Filter by exact license name. Example: Microsoft 365

+
+
+ product_key   +string  +optional   + +
+

Filter by exact product key. Example: W269N

+
+
+ order_number   +string  +optional   + +
+

Filter by exact order number. Example: 12345

+
+
+ purchase_order   +string  +optional   + +
+

Filter by exact purchase order. Example: PO12345

+
+
+ license_name   +string  +optional   + +
+

Filter by exact licensee name. Example: John Doe

+
+
+ license_email   +string  +optional   + +
+

Filter by exact licensee email. Example: john.d

+
+
+ +

Create License

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/licenses" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/licenses"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/licenses';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/licenses'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/licenses +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show License

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/licenses/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/licenses/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/licenses/1';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/licenses/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=fr7kJMaaASq4b53DwioCqOIG1A7k7COxiBsYFjXL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/licenses/{license_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ license_id   +integer  +   + +
+

The ID of the license. Example: 1

+
+
+ +

Update License

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/licenses/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/licenses/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/licenses/1';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/licenses/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/licenses/{license_id} +

+

+ PATCH + api/v1/licenses/{license_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ license_id   +integer  +   + +
+

The ID of the license. Example: 1

+
+
+ +

Delete License

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/licenses/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/licenses/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/licenses/1';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/licenses/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/licenses/{license_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ license_id   +integer  +   + +
+

The ID of the license. Example: 1

+
+
+ +

License Seats

+

List License Seats

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/licenses/1/seats" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/licenses/1/seats"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/licenses/1/seats';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/licenses/1/seats'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=StfngPkbKXNpOhusZSc3gJVfFrY1dHeurAa4otwt; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/licenses/{license_id}/seats +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ license_id   +integer  +   + +
+

The ID of the license. Example: 1

+
+
+ +

Show License Seat

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/licenses/1/seats/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/licenses/1/seats/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/licenses/1/seats/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/licenses/1/seats/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=4NcQjrTDkyy5Ps1lwLlvwwkW8zLNdvkt4jLniAbj; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/licenses/{license_id}/seats/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ license_id   +integer  +   + +
+

The ID of the license. Example: 1

+
+
+ id   +string  +   + +
+

The ID of the seat. Example: architecto

+
+
+ +

Update License Seat

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/licenses/1/seats/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/licenses/1/seats/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/licenses/1/seats/architecto';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/licenses/1/seats/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/licenses/{license_id}/seats/{id} +

+

+ PATCH + api/v1/licenses/{license_id}/seats/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ license_id   +integer  +   + +
+

The ID of the license. Example: 1

+
+
+ id   +string  +   + +
+

The ID of the seat. Example: architecto

+
+
+ +

Locations

+ + + +

Gets a paginated collection for the select2 menus

+ +

+requires authentication +

+ +

This is handled slightly differently as of ~4.7.8-pre, as +we have to do some recursive magic to get the hierarchy to display +properly when looking at the parent/child relationship in the +rich menus.

+

This means we can't use the normal pagination that we use elsewhere +in our selectlists, since we have to get the full set before we can +determine which location is parent/child/grandchild, etc.

+

This also means that hierarchy display gets a little funky when people +use the Select2 search functionality, but there's not much we can do about +that right now.

+

As a result, instead of paginating as part of the query, we have to grab +the entire data set, and then invoke a paginator manually and pass that +through to the SelectListTransformer.

+

Many thanks to @uberbrady for the help getting this working better. +Recursion still sucks, but I guess he doesn't have to get in the +sea... this time.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/locations/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/locations/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/locations/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/locations/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=UpVwalXoUKqNpdc1JZOoxLIbtfuGTDjmXv2FL0U4; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/locations/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Assets with Default Location

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/locations/1/assets" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/locations/1/assets"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/locations/1/assets';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/locations/1/assets'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=s6eLrXoHfx9aHRHsGokhuXGIfcWMyMK6s8Y7CuQb; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/locations/{location_id}/assets +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ location_id   +integer  +   + +
+

The ID of the location. Example: 1

+
+
+ +

Show Assets Assigned to Location

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/locations/1/assigned/assets" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/locations/1/assigned/assets"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/locations/1/assigned/assets';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/locations/1/assigned/assets'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=6IjNjFVBRoxfcpk3lgt97JCcwcwkJ18MblUUArEa; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/locations/{location_id}/assigned/assets +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ location_id   +integer  +   + +
+

The ID of the location. Example: 1

+
+
+ +

Show Accessories Assigned to Location

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/locations/1/assigned/accessories" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/locations/1/assigned/accessories"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/locations/1/assigned/accessories';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/locations/1/assigned/accessories'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=8QVLWPz9VFdTVM9oelFsOvXEnefwKOeIuos7D23G; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/locations/{location_id}/assigned/accessories +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ location_id   +integer  +   + +
+

The ID of the location. Example: 1

+
+
+ +

List Locations

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/locations?search=Headquarters&name=Headquarters&address=123+Main+St&address2=Suite+100&city=Springfield&zip=12345&country=USA&manager_id=1&company_id=1&parent_id=1&status=active&sort=name&order=asc" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/locations"
+);
+
+const params = {
+    "search": "Headquarters",
+    "name": "Headquarters",
+    "address": "123 Main St",
+    "address2": "Suite 100",
+    "city": "Springfield",
+    "zip": "12345",
+    "country": "USA",
+    "manager_id": "1",
+    "company_id": "1",
+    "parent_id": "1",
+    "status": "active",
+    "sort": "name",
+    "order": "asc",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/locations';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'search' => 'Headquarters',
+            'name' => 'Headquarters',
+            'address' => '123 Main St',
+            'address2' => 'Suite 100',
+            'city' => 'Springfield',
+            'zip' => '12345',
+            'country' => 'USA',
+            'manager_id' => '1',
+            'company_id' => '1',
+            'parent_id' => '1',
+            'status' => 'active',
+            'sort' => 'name',
+            'order' => 'asc',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/locations'
+params = {
+  'search': 'Headquarters',
+  'name': 'Headquarters',
+  'address': '123 Main St',
+  'address2': 'Suite 100',
+  'city': 'Springfield',
+  'zip': '12345',
+  'country': 'USA',
+  'manager_id': '1',
+  'company_id': '1',
+  'parent_id': '1',
+  'status': 'active',
+  'sort': 'name',
+  'order': 'asc',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=OrGO92pRr2bN1MO0HEk74EaOyIBpyNWW8nBBM9w1; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/locations +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ search   +string  +optional   + +
+

Search term to filter results. Example: Headquarters

+
+
+ name   +string  +optional   + +
+

Filter by exact location name. Example: Headquarters

+
+
+ address   +string  +optional   + +
+

Filter by exact address. Example: 123 Main St

+
+
+ address2   +string  +optional   + +
+

Filter by exact address2. Example: Suite 100

+
+
+ city   +string  +optional   + +
+

Filter by exact city. Example: Springfield

+
+
+ zip   +string  +optional   + +
+

Filter by exact zip code. Example: 12345

+
+
+ country   +string  +optional   + +
+

Filter by exact country. Example: USA

+
+
+ manager_id   +integer  +optional   + +
+

Filter by exact manager (user) ID. Example: 1

+
+
+ company_id   +integer  +optional   + +
+

Filter by exact company ID. Example: 1

+
+
+ parent_id   +integer  +optional   + +
+

Filter by exact parent location ID. Example: 1

+
+
+ status   +string  +optional   + +
+

Filter by location status. Allowed values: active, deleted. Example: active

+
+
+ sort   +string  +optional   + +
+

Column to sort results by. Allowed values: accessorries_count, address, address2, assets_count, assigned_assets_count, rtd_assets_count, accessories_count, assigned_accessories_count, components_count, consumables_count, users_count, children_count, city, country, created_at, currency, id, image, ldap_ou, company_id, manager_id, name, rtd_assets_count, state, updated_at, zip. Default: created_at. Example: name

+
+
+ order   +string  +optional   + +
+

Order of sorted results. Allowed values: asc, desc. Default: desc. Example: asc

+
+
+ +

Create Location

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/locations" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/locations"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/locations';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/locations'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/locations +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Location

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/locations/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/locations/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/locations/1';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/locations/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=r40jhYlCjVborgeetW7XFFJzC3FPckbK3wiqaq9b; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/locations/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the location. Example: 1

+
+
+ +

Update Location

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/locations/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/locations/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/locations/1';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/locations/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/locations/{id} +

+

+ PATCH + api/v1/locations/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the location. Example: 1

+
+
+ +

Delete Location

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/locations/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/locations/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/locations/1';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/locations/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/locations/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the location. Example: 1

+
+
+ +

Maintenances

+ + + +

List Maintenances

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/maintenances?search=repair&asset_id=1&supplier_id=1&created_by=16&url=http%3A%2F%2Fexample.com&asset_maintenance_type=repair&sort=name&order=asc&offset=0&limit=50" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/maintenances"
+);
+
+const params = {
+    "search": "repair",
+    "asset_id": "1",
+    "supplier_id": "1",
+    "created_by": "16",
+    "url": "http://example.com",
+    "asset_maintenance_type": "repair",
+    "sort": "name",
+    "order": "asc",
+    "offset": "0",
+    "limit": "50",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/maintenances';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'search' => 'repair',
+            'asset_id' => '1',
+            'supplier_id' => '1',
+            'created_by' => '16',
+            'url' => 'http://example.com',
+            'asset_maintenance_type' => 'repair',
+            'sort' => 'name',
+            'order' => 'asc',
+            'offset' => '0',
+            'limit' => '50',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/maintenances'
+params = {
+  'search': 'repair',
+  'asset_id': '1',
+  'supplier_id': '1',
+  'created_by': '16',
+  'url': 'http://example.com',
+  'asset_maintenance_type': 'repair',
+  'sort': 'name',
+  'order': 'asc',
+  'offset': '0',
+  'limit': '50',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=HIPWn994ZVwWTllISCuyT1n0vLjhvE6GtJdyvVt5; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/maintenances +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ search   +string  +optional   + +
+

Search term to filter results. Example: repair

+
+
+ asset_id   +integer  +optional   + +
+

Filter by exact asset ID. Example: 1

+
+
+ supplier_id   +integer  +optional   + +
+

Filter by exact supplier ID. Example: 1

+
+
+ created_by   +integer  +optional   + +
+

Filter by exact user ID who created the maintenance. Example Example: 16

+
+
+ url   +string  +optional   + +
+

Filter by exact URL. Example: http://example.com

+
+
+ asset_maintenance_type   +string  +optional   + +
+

Filter by exact maintenance type. Example: repair

+
+
+ sort   +string  +optional   + +
+

Column to sort results by. Allowed values: id, name, asset_maintenance_time, asset_maintenance_type, cost, start_date, completion_date, notes, asset_tag, asset_name, serial, created_by, supplier, location, is_warranty, status_label. Default: created_at. Example: name

+
+
+ order   +string  +optional   + +
+

Order of sorted results. Allowed values: asc, desc. Default: desc. Example: asc

+
+
+ offset   +integer  +optional   + +
+

Offset/starting position of the results. Default: 0. Example: 0

+
+
+ limit   +integer  +optional   + +
+

Limit the number of results returned. Default: 25. Maximum: 100. Example: 50

+
+
+ +

Create Maintenance

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/maintenances" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/maintenances"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/maintenances';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/maintenances'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/maintenances +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

View Maintenance

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/maintenances/2" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/maintenances/2"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/maintenances/2';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/maintenances/2'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=SMRgTfJyiKW4MwqoQkxPhRwZ7s0NG6iXfqrgvOF3; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/maintenances/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the maintenance. Example: 2

+
+
+ +

Update Maintenance

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/maintenances/2" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/maintenances/2"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/maintenances/2';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/maintenances/2'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/maintenances/{id} +

+

+ PATCH + api/v1/maintenances/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the maintenance. Example: 2

+
+
+ +

Delete Maintenance

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/maintenances/2" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/maintenances/2"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/maintenances/2';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/maintenances/2'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/maintenances/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the maintenance. Example: 2

+
+
+ +

Manufacturers

+ + + +

Selectlist

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/manufacturers/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/manufacturers/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/manufacturers/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/manufacturers/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=wsdZCoP7veaDGNxSgmEVyiIXMCynDJaplPtmclKS; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/manufacturers/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Restore Deleted Manufacturer

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/manufacturers/architecto/restore" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/manufacturers/architecto/restore"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/manufacturers/architecto/restore';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/manufacturers/architecto/restore'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/manufacturers/{id}/restore +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the manufacturer. Example: architecto

+
+
+ +

List Manufacturers

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/manufacturers?search=Dell&name=Dell&url=http%3A%2F%2Fexample.com&support_url=http%3A%2F%2Fsupport.example.com&warranty_lookup_url=http%3A%2F%2Fwarranty.example.com&support_phone=1-800-555-5555&support_email=support%40example.org&sort=name&order=asc&offset=0&limit=50" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/manufacturers"
+);
+
+const params = {
+    "search": "Dell",
+    "name": "Dell",
+    "url": "http://example.com",
+    "support_url": "http://support.example.com",
+    "warranty_lookup_url": "http://warranty.example.com",
+    "support_phone": "1-800-555-5555",
+    "support_email": "support@example.org",
+    "sort": "name",
+    "order": "asc",
+    "offset": "0",
+    "limit": "50",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/manufacturers';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'search' => 'Dell',
+            'name' => 'Dell',
+            'url' => 'http://example.com',
+            'support_url' => 'http://support.example.com',
+            'warranty_lookup_url' => 'http://warranty.example.com',
+            'support_phone' => '1-800-555-5555',
+            'support_email' => 'support@example.org',
+            'sort' => 'name',
+            'order' => 'asc',
+            'offset' => '0',
+            'limit' => '50',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/manufacturers'
+params = {
+  'search': 'Dell',
+  'name': 'Dell',
+  'url': 'http://example.com',
+  'support_url': 'http://support.example.com',
+  'warranty_lookup_url': 'http://warranty.example.com',
+  'support_phone': '1-800-555-5555',
+  'support_email': 'support@example.org',
+  'sort': 'name',
+  'order': 'asc',
+  'offset': '0',
+  'limit': '50',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=hLpuGgLKlkZ3lxAdCVVQh6AknrP7V8ucHP12iJyL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/manufacturers +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ search   +string  +optional   + +
+

Search term to filter results. Example: Dell

+
+
+ name   +string  +optional   + +
+

Filter by exact manufacturer name. Example: Dell

+
+
+ url   +string  +optional   + +
+

Filter by exact URL. Example: http://example.com

+
+
+ support_url   +string  +optional   + +
+

Filter by exact support URL. Example: http://support.example.com

+
+
+ warranty_lookup_url   +string  +optional   + +
+

Filter by exact warranty lookup URL. Example: http://warranty.example.com

+
+
+ support_phone   +string  +optional   + +
+

Filter by exact support phone number. Example: 1-800-555-5555

+
+
+ support_email   +string  +optional   + +
+

Filter by exact support email address. Example: support@example.org

+
+
+ sort   +string  +optional   + +
+

Column to sort results by. Allowed values: id, name, url, support_url, support_email, warranty_lookup_url, support_phone, created_at, updated_at, assets_count, consumables_count, components_count, licenses_count. Default: created_at. Example: name

+
+
+ order   +string  +optional   + +
+

Order of sorted results. Allowed values: asc, desc. Default: desc. Example: asc

+
+
+ offset   +integer  +optional   + +
+

Offset/starting position of the results. Default: 0. Example: 0

+
+
+ limit   +integer  +optional   + +
+

Limit the number of results returned. Default: 25. Maximum: 100. Example: 50

+
+
+ +

Create Maintenance

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/manufacturers" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/manufacturers"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/manufacturers';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/manufacturers'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/manufacturers +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Manufacturer

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/manufacturers/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/manufacturers/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/manufacturers/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/manufacturers/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=AihyA0pGOpolpeaHgVkhwxZ48ZIGlH5C4cWn2ky1; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/manufacturers/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the manufacturer. Example: architecto

+
+
+ +

Update Manufacturer

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/manufacturers/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/manufacturers/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/manufacturers/architecto';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/manufacturers/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/manufacturers/{id} +

+

+ PATCH + api/v1/manufacturers/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the manufacturer. Example: architecto

+
+
+ +

Delete Manufacturer

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/manufacturers/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/manufacturers/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/manufacturers/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/manufacturers/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/manufacturers/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the manufacturer. Example: architecto

+
+
+ +

Misc

+ + + +

Version API routes

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/version" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/version"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/version';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/version'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=4opUPyEuZlodDlaWWG7JNFN7lCuHNMim1KxZHPur; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=719999; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/version +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Models

+ + + +

Selectlist of Models

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/models/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/models/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/models/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/models/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=jwtFIyYGPRatDfntlAj40jo0O4Sj0FCnKi976PR2; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/models/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

List Assets in Model

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/models/assets" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/models/assets"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/models/assets';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/models/assets'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=nvMGTR69fETV88dw8dfKSbREZAJ66IYQUUNSpf7Y; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/models/assets +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the model. Example: 16

+
+
+ +

List Models

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/models" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/models"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/models';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/models'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=QArLWCify7SZSmEfdwLa8MuiE73ySbcjczNWAP5t; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/models +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Create Model

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/models" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/models"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/models';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/models'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/models +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Model

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/models/16" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/models/16"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/models/16';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/models/16'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=Fi7bcrWvfZzmZFbGKAT0DPwaht8G2vkcbjoJPdZ1; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/models/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the model. Example: 16

+
+
+ +

Update Model

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/models/16" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/models/16"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/models/16';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/models/16'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/models/{id} +

+

+ PATCH + api/v1/models/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the model. Example: 16

+
+
+ +

Delete Model

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/models/16" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/models/16"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/models/16';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/models/16'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/models/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the model. Example: 16

+
+
+ +

Notes

+ + + +

Assets

+

Store Note

+ +

+requires authentication +

+ +

Checks authorization for updating assets, validates the presence of the 'note', +attempts to find the asset by ID, and creates a new ActionLog entry if successful. +Returns JSON responses indicating success or failure with appropriate HTTP status codes.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/notes/1/store" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/notes/1/store"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/notes/1/store';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/notes/1/store'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/notes/{asset_id}/store +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +integer  +   + +
+

The ID of the asset. Example: 1

+
+
+ +

List Notes

+ +

+requires authentication +

+ +

Checks authorization to view assets, attempts to find the asset by ID, +and fetches related action log entries of type 'note added', including +user information for each note. Returns a JSON response with the notes or errors.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/notes/1/index" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/notes/1/index"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/notes/1/index';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/notes/1/index'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=0996I9pgG6hTiplyAUfm6hARQqlLp2KcZRKbrsM4; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/notes/{asset_id}/index +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ asset_id   +integer  +   + +
+

The ID of the asset. Example: 1

+
+
+ +

Predefined Kits

+ + + +

List Kits

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/kits" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=BSc46Rjyl24Ed0D3XweTOOmBl4ZRMjvkZT0P0LSQ; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/kits +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Create Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/kits" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/kits +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/kits/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=0eyOqf0SJ6Slcj3wxf7abcmSncDyqjA8t0LitABZ; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/kits/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ +

Update Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/kits/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/kits/{id} +

+

+ PATCH + api/v1/kits/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ +

Delete Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/kits/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/kits/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ +

List Licenses in Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/kits/1/licenses" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/licenses"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/licenses';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/licenses'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=RDCUVBV4hMi1OpBYln5l3IZ2PNZLexaBBBMcPiY3; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/kits/{kit_id}/licenses +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ +

Add License to Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/kits/1/licenses" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"license\": 1,
+    \"quantity\": 1
+}"
+
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/licenses"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "license": 1,
+    "quantity": 1
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/licenses';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'license' => 1,
+            'quantity' => 1,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/licenses'
+payload = {
+    "license": 1,
+    "quantity": 1
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers, json=payload)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/kits/{kit_id}/licenses +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+

Body Parameters

+
+ license   +integer  +   + +
+

The ID of the license. Example: 1

+
+
+ quantity   +integer  +optional   + +
+

The quantity of the license. Example: 1

+
+
+ +

Update License in Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/kits/1/licenses/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/licenses/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/licenses/1';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/licenses/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/kits/{kit_id}/licenses/{license_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ license_id   +integer  +   + +
+

The ID of the license. Example: 1

+
+
+ +

Remove License from Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/kits/1/licenses/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/licenses/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/licenses/1';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/licenses/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/kits/{kit_id}/licenses/{license_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ license_id   +integer  +   + +
+

The ID of the license. Example: 1

+
+
+ +

List Models in Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/kits/1/models" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/models"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/models';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/models'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=BdKhymmjrKjGS7HIhqlvLkChaxUPdHXJf1sntPCm; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/kits/{kit_id}/models +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ +

Add Model to Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/kits/1/models" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"model\": 1
+}"
+
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/models"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "model": 1
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/models';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'model' => 1,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/models'
+payload = {
+    "model": 1
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers, json=payload)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/kits/{kit_id}/models +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+

Body Parameters

+
+ model   +integer  +   + +
+

The ID of the model. Example: 1

+
+
+ +

List Accessories in Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/kits/1/accessories" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/accessories"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/accessories';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/accessories'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=50xoUvlOlSVxg5nWSWhvNx9mDtVXWDyttn6Tdl13; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/kits/{kit_id}/accessories +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ +

Add Accessory to Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/kits/1/accessories" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"accessory\": 1,
+    \"quantity\": 1
+}"
+
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/accessories"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "accessory": 1,
+    "quantity": 1
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/accessories';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'accessory' => 1,
+            'quantity' => 1,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/accessories'
+payload = {
+    "accessory": 1,
+    "quantity": 1
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers, json=payload)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/kits/{kit_id}/accessories +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+

Body Parameters

+
+ accessory   +integer  +   + +
+

The ID of the accessory. Example: 1

+
+
+ quantity   +integer  +optional   + +
+

The quantity of the accessory. Example: 1

+
+
+ +

Update Accessory in Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/kits/1/accessories/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"quantity\": 1
+}"
+
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/accessories/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "quantity": 1
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/accessories/1';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'quantity' => 1,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/accessories/1'
+payload = {
+    "quantity": 1
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers, json=payload)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/kits/{kit_id}/accessories/{accessory_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ accessory_id   +integer  +   + +
+

The ID of the accessory. Example: 1

+
+

Body Parameters

+
+ quantity   +integer  +optional   + +
+

The quantity of the accessory. Example: 1

+
+
+ +

Remove Accessory from Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/kits/1/accessories/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/accessories/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/accessories/1';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/accessories/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/kits/{kit_id}/accessories/{accessory_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ accessory_id   +integer  +   + +
+

The ID of the accessory. Example: 1

+
+
+ +

List Consumables in Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/kits/1/consumables" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/consumables"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/consumables';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/consumables'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=Q2XcAI2qf8SWjOX7XDlr4BFa9PAeUgRBAaRStarB; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/kits/{kit_id}/consumables +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ +

Add Consumable to Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/kits/1/consumables" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"consumable\": 1,
+    \"quantity\": 1
+}"
+
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/consumables"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "consumable": 1,
+    "quantity": 1
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/consumables';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'consumable' => 1,
+            'quantity' => 1,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/consumables'
+payload = {
+    "consumable": 1,
+    "quantity": 1
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers, json=payload)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/kits/{kit_id}/consumables +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+

Body Parameters

+
+ consumable   +integer  +   + +
+

The ID of the consumable. Example: 1

+
+
+ quantity   +integer  +optional   + +
+

The quantity of the consumable. Example: 1

+
+
+ +

Update Consumable in Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/kits/1/consumables/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"quantity\": 1
+}"
+
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/consumables/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "quantity": 1
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/consumables/1';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'quantity' => 1,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/consumables/1'
+payload = {
+    "quantity": 1
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers, json=payload)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/kits/{kit_id}/consumables/{consumable_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ consumable_id   +integer  +   + +
+

The ID of the consumable. Example: 1

+
+

Body Parameters

+
+ quantity   +integer  +optional   + +
+

The quantity of the consumable. Example: 1

+
+
+ +

Remove Consumable from Kit

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/kits/1/consumables/1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/kits/1/consumables/1"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/kits/1/consumables/1';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/kits/1/consumables/1'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/kits/{kit_id}/consumables/{consumable_id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kit_id   +integer  +   + +
+

The ID of the kit. Example: 1

+
+
+ consumable_id   +integer  +   + +
+

The ID of the consumable. Example: 1

+
+
+ +

Reports

+ + + +

Activity Report

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/reports/activity?search=updated&target_type=user&target_id=1&item_type=asset&item_id=1&action_type=create&created_by=1&action_source=web&uploads=1&sort=created_at&order=desc&offset=0&limit=25" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/reports/activity"
+);
+
+const params = {
+    "search": "updated",
+    "target_type": "user",
+    "target_id": "1",
+    "item_type": "asset",
+    "item_id": "1",
+    "action_type": "create",
+    "created_by": "1",
+    "action_source": "web",
+    "uploads": "1",
+    "sort": "created_at",
+    "order": "desc",
+    "offset": "0",
+    "limit": "25",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/reports/activity';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'search' => 'updated',
+            'target_type' => 'user',
+            'target_id' => '1',
+            'item_type' => 'asset',
+            'item_id' => '1',
+            'action_type' => 'create',
+            'created_by' => '1',
+            'action_source' => 'web',
+            'uploads' => '1',
+            'sort' => 'created_at',
+            'order' => 'desc',
+            'offset' => '0',
+            'limit' => '25',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/reports/activity'
+params = {
+  'search': 'updated',
+  'target_type': 'user',
+  'target_id': '1',
+  'item_type': 'asset',
+  'item_id': '1',
+  'action_type': 'create',
+  'created_by': '1',
+  'action_source': 'web',
+  'uploads': '1',
+  'sort': 'created_at',
+  'order': 'desc',
+  'offset': '0',
+  'limit': '25',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=Q7c7iu2qi9Mil7UrdGdQhd5UHhMHwIs9J7wKxvhY; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/reports/activity +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ search   +string  +optional   + +
+

Search term to filter results Example: updated

+
+
+ target_type   +string  +optional   + +
+

Filter by target type Example: user

+
+
+ target_id   +integer  +optional   + +
+

Filter by target ID Example: 1

+
+
+ item_type   +string  +optional   + +
+

Filter by item type Example: asset

+
+
+ item_id   +integer  +optional   + +
+

Filter by item ID Example: 1

+
+
+ action_type   +string  +optional   + +
+

Filter by action type Example: create

+
+
+ created_by   +integer  +optional   + +
+

Filter by user ID who created the log Example: 1

+
+
+ action_source   +string  +optional   + +
+

Filter by action source Example: web

+
+
+ remote_ip   +string  +optional   + +
+

Filter by remote IP address Example:

+
+
+ uploads   +boolean  +optional   + + +
+

Filter to only show logs with file uploads Example: true

+
+
+ sort   +string  +optional   + +
+

Column to sort by. Allowed values: id, created_at, target_id, created_by, accept_signature, action_type, note, remote_ip, user_agent, target_type, item_type, action_source, action_date. Default is created_at. Example: created_at

+
+
+ order   +string  +optional   + +
+

Order of sorting. Allowed values: asc, desc. Default is desc. Example: desc

+
+
+ offset   +integer  +optional   + +
+

Number of records to skip for pagination. Default is 0. Example: 0

+
+
+ limit   +integer  +optional   + +
+

Maximum number of records to return. Default is 25. Example: 25

+
+
+ +

Settings

+ + + +

Test LDAP Connection

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/settings/ldaptest" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/settings/ldaptest"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/settings/ldaptest';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/settings/ldaptest'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=sXQmK1seBet712r1kd4fxKvJ8eS1G5JIQGi7Jk76; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/settings/ldaptest +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Delete Barcode Cache

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/settings/purge_barcodes" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/settings/purge_barcodes"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/settings/purge_barcodes';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/settings/purge_barcodes'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/settings/purge_barcodes +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Get a list of login attempts

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/settings/login-attempts" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/settings/login-attempts"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/settings/login-attempts';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/settings/login-attempts'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=3WvRIFmkRUjvmDyyocP7gGkeVA8nsKCstMlpD2ll; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/settings/login-attempts +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Test LDAP Login

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/settings/ldaptestlogin" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"ldaptest_user\": \"architecto\",
+    \"ldaptest_password\": \"architecto\"
+}"
+
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/settings/ldaptestlogin"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "ldaptest_user": "architecto",
+    "ldaptest_password": "architecto"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/settings/ldaptestlogin';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'ldaptest_user' => 'architecto',
+            'ldaptest_password' => 'architecto',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/settings/ldaptestlogin'
+payload = {
+    "ldaptest_user": "architecto",
+    "ldaptest_password": "architecto"
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers, json=payload)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/settings/ldaptestlogin +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ ldaptest_user   +string  +   + +
+

Example: architecto

+
+
+ ldaptest_password   +string  +   + +
+

Example: architecto

+
+
+ +

Test Email Configuration

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/settings/mailtest" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/settings/mailtest"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/settings/mailtest';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/settings/mailtest'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/settings/mailtest +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Lists backup files

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/settings/backups" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/settings/backups"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/settings/backups';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/settings/backups'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=c1LnO2y90g9cXIQdH1B3ALRTwBznlJR0MPn7UYwI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/settings/backups +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Determines and downloads the latest backup

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/settings/backups/download/latest" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/settings/backups/download/latest"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/settings/backups/download/latest';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/settings/backups/download/latest'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=h8vmsBd9n2ThBnox919dPAo17WMNdGSmFDgmUWbJ; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/settings/backups/download/latest +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Downloads a backup file.

+ +

+requires authentication +

+ +

We use response()->download() here instead of Storage::download() because Storage::download() +exhausts memory on larger files.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/settings/backups/download/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/settings/backups/download/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/settings/backups/download/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/settings/backups/download/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=dEPJObU3yZeyRQ0ZNZQmLDg70DDH6mt8OLUoXk7b; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/settings/backups/download/{file} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ file   +string  +   + +
+

Example: architecto

+
+
+ +

Status Labels

+ + + +

Assets

+

Selectlist

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/statuslabels/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/statuslabels/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=wkMPeN6kxHTgcy7pBWCmBb2skYp7Ozxo03ll2QRI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/statuslabels/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Count for Pie Chart

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/statuslabels/assets/name" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/statuslabels/assets/name"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/assets/name';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/assets/name'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=BwSbIkmBBnKEl1eHDB5irvFrSmdOermismgPqdVt; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/statuslabels/assets/name +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Count for Pie Chart by Meta Status

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/statuslabels/assets/type" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/statuslabels/assets/type"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/assets/type';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/assets/type'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=qgDpluENzw06DYesVDJ62VPNypFZR7TMXA5YuERD; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/statuslabels/assets/type +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Assets with Status Label

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/statuslabels/architecto/assetlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/statuslabels/architecto/assetlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/architecto/assetlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/architecto/assetlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=prHwFCnHCRfbaQBGGsb9zl9HAqpNQVahgTzOn5TU; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/statuslabels/{id}/assetlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the statuslabel. Example: architecto

+
+
+ +

Check for Deployable Status

+ +

+requires authentication +

+ +

Returns a boolean response based on whether the status label +is one that is deployable or pending.

+

This is used by the hardware create/edit view to determine whether +we should provide a dropdown of users for them to check the asset out to, +and whether we show a warning that the asset will be checked in if it's already +assigned but the status is changed to one that isn't pending or deployable

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/statuslabels/architecto/deployable" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/statuslabels/architecto/deployable"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/architecto/deployable';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/architecto/deployable'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=gGlaRILsVZF4fEWWem29LTEhtwQLJo5jRgFzetFi; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/statuslabels/{statuslabel}/deployable +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ statuslabel   +string  +   + +
+

The statuslabel. Example: architecto

+
+
+ +

Show Status Labels

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/statuslabels?search=Inventory" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/statuslabels"
+);
+
+const params = {
+    "search": "Inventory",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/statuslabels';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'search' => 'Inventory',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/statuslabels'
+params = {
+  'search': 'Inventory',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=wZlTwk63tGu1kRBFJuzb8R1UY1k0ZU2YI5NAAZt8; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/statuslabels +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ search   +string  +optional   + +
+

Search term to filter results. Example: Inventory

+
+
+ +

Store a newly created resource in storage.

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/statuslabels" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/statuslabels"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/statuslabels';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/statuslabels'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/statuslabels +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Status Labels

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/statuslabels/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/statuslabels/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=BoPls7yDoCtaubgDPfK5nEabHin9oYkJpg9vZT3b; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/statuslabels/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the statuslabel. Example: architecto

+
+
+ +

Update Status Label

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/statuslabels/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/statuslabels/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/architecto';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/statuslabels/{id} +

+

+ PATCH + api/v1/statuslabels/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the statuslabel. Example: architecto

+
+
+ +

Delete Status Label

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/statuslabels/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/statuslabels/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/statuslabels/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/statuslabels/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the statuslabel. Example: architecto

+
+
+ +

Suppliers

+ + + +

Selectlist

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/suppliers/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/suppliers/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/suppliers/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/suppliers/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=XCddlMqcqKqWUTBwJenBf996h9VUAuQn9onGzMNw; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/suppliers/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

List Suppliers

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/suppliers?search=Acme&name=Acme+Corp&address=123+Main+St&address2=Suite+100&city=Springfield&state=IL&zip=62701&country=USA&phone=555-1234&fax=555-5678&email=info%40example.org&url=http%3A%2F%2Fexample.com&notes=This+is+a+note.&sort=name&order=asc&offset=0&limit=50" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/suppliers"
+);
+
+const params = {
+    "search": "Acme",
+    "name": "Acme Corp",
+    "address": "123 Main St",
+    "address2": "Suite 100",
+    "city": "Springfield",
+    "state": "IL",
+    "zip": "62701",
+    "country": "USA",
+    "phone": "555-1234",
+    "fax": "555-5678",
+    "email": "info@example.org",
+    "url": "http://example.com",
+    "notes": "This is a note.",
+    "sort": "name",
+    "order": "asc",
+    "offset": "0",
+    "limit": "50",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/suppliers';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'search' => 'Acme',
+            'name' => 'Acme Corp',
+            'address' => '123 Main St',
+            'address2' => 'Suite 100',
+            'city' => 'Springfield',
+            'state' => 'IL',
+            'zip' => '62701',
+            'country' => 'USA',
+            'phone' => '555-1234',
+            'fax' => '555-5678',
+            'email' => 'info@example.org',
+            'url' => 'http://example.com',
+            'notes' => 'This is a note.',
+            'sort' => 'name',
+            'order' => 'asc',
+            'offset' => '0',
+            'limit' => '50',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/suppliers'
+params = {
+  'search': 'Acme',
+  'name': 'Acme Corp',
+  'address': '123 Main St',
+  'address2': 'Suite 100',
+  'city': 'Springfield',
+  'state': 'IL',
+  'zip': '62701',
+  'country': 'USA',
+  'phone': '555-1234',
+  'fax': '555-5678',
+  'email': 'info@example.org',
+  'url': 'http://example.com',
+  'notes': 'This is a note.',
+  'sort': 'name',
+  'order': 'asc',
+  'offset': '0',
+  'limit': '50',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=R5PUii8mbVR2t8EyWTQHM80dstDyhZxcQR15nKb7; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/suppliers +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ search   +string  +optional   + +
+

Search term to filter results. Example: Acme

+
+
+ name   +string  +optional   + +
+

Filter by exact supplier name. Example: Acme Corp

+
+
+ address   +string  +optional   + +
+

Filter by exact address. Example: 123 Main St

+
+
+ address2   +string  +optional   + +
+

Filter by exact address2. Example: Suite 100

+
+
+ city   +string  +optional   + +
+

Filter by exact city. Example: Springfield

+
+
+ state   +string  +optional   + +
+

Filter by exact state. Example: IL

+
+
+ zip   +string  +optional   + +
+

Filter by exact zip code. Example: 62701

+
+
+ country   +string  +optional   + +
+

Filter by exact country. Example: USA

+
+
+ phone   +string  +optional   + +
+

Filter by exact phone number. Example: 555-1234

+
+
+ fax   +string  +optional   + +
+

Filter by exact fax number. Example: 555-5678

+
+
+ email   +string  +optional   + +
+

Filter by exact email address. Example: info@example.org

+
+
+ url   +string  +optional   + +
+

Filter by exact URL. Example: http://example.com

+
+
+ notes   +string  +optional   + +
+

Filter by exact notes. Example: This is a note.

+
+
+ sort   +string  +optional   + +
+

Column to sort results by. Allowed values: id, name, address, address2, city, state, country, zip, phone, contact, fax, email, image, assets_count, licenses_count, accessories_count, components_count, consumables_count, url, notes. Default: created_at. Example: name

+
+
+ order   +string  +optional   + +
+

Order of sorted results. Allowed values: asc, desc. Default: desc. Example: asc

+
+
+ offset   +integer  +optional   + +
+

Offset/starting position of the results. Default: 0. Example: 0

+
+
+ limit   +integer  +optional   + +
+

Limit the number of results returned. Default: 25. Maximum: 100. Example: 50

+
+
+ +

Create Supplier

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/suppliers" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/suppliers"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/suppliers';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/suppliers'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/suppliers +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Supplier

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/suppliers/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/suppliers/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/suppliers/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/suppliers/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=aqFNCFcjAl7hMG1Q0RCnYmK7HTNWcq0kYhd1R9NN; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/suppliers/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the supplier. Example: architecto

+
+
+ +

Update Supplier

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/suppliers/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/suppliers/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/suppliers/architecto';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/suppliers/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/suppliers/{id} +

+

+ PATCH + api/v1/suppliers/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the supplier. Example: architecto

+
+
+ +

Delete Supplier

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/suppliers/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/suppliers/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/suppliers/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/suppliers/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/suppliers/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the supplier. Example: architecto

+
+
+ +

User Groups

+ + + +

Display a listing of the resource.

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/groups" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/groups"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/groups';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/groups'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=evRZVbrjaLPlDGuAmSjuQxAfBkaXVVI3h6YJ8xCC; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/groups +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Create Group

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/groups" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/groups"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/groups';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/groups'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/groups +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show Group

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/groups/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/groups/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/groups/architecto';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/groups/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=lUFcyrjpTiMJiziJCYaZzhxr9o4YDOHuJhtyxe9O; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/groups/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the group. Example: architecto

+
+
+ +

Update Group

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/groups/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/groups/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/groups/architecto';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/groups/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/groups/{id} +

+

+ PATCH + api/v1/groups/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the group. Example: architecto

+
+
+ +

Remove the specified resource from storage.

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/groups/architecto" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/groups/architecto"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/groups/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/groups/architecto'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/groups/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the group. Example: architecto

+
+
+ +

Users

+ + + +

Selectlist

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/users/selectlist" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/selectlist"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/selectlist';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/selectlist'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=IZgqgS9tzB7Woi3wtkhrOVoQAjhOfyxkuDcPvkvg; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/users/selectlist +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

LDAP Sync Users

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/users/ldapsync" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/ldapsync"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/ldapsync';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/ldapsync'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/users/ldapsync +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Reset Two-factor

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/users/two_factor_reset" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/two_factor_reset"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/two_factor_reset';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/two_factor_reset'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/users/two_factor_reset +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Get Current User Info

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/users/me" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/me"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/me';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/me'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=DdpSv89XUbxUQrWd91QsKhNPnl22poe1TgDO9OCx; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/users/me +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

User EULAs

+ +

+requires authentication +

+ +

Gets the lst of accepted EULAs for a user,

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/users/2/eulas" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/2/eulas"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/2/eulas';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/2/eulas'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=jvqTGWtV1aH3OTBKuSWap25Q3CbiBnuZeONwLBEc; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/users/{user_id}/eulas +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ user_id   +integer  +   + +
+

The ID of the user. Example: 2

+
+
+ +

List Assets Assigned to User

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/users/2/assets" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/2/assets"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/2/assets';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/2/assets'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=BTajd65gRG0olNCl96HmZp8natMFNGjMvOZInbII; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/users/{user}/assets +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ user   +integer  +   + +
+

The user. Example: 2

+
+
+ +

Email Asset List to User

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/users/2/email" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/2/email"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/2/email';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/2/email'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/users/{user}/email +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ user   +integer  +   + +
+

The user. Example: 2

+
+
+ +

List Accessories Assigned to User

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/users/2/accessories" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/2/accessories"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/2/accessories';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/2/accessories'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=dwRnv0ptfgrlzbYQmswhgKgXRySAxB0gpanmjDq9; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/users/{user}/accessories +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ user   +integer  +   + +
+

The user. Example: 2

+
+
+ +

List Licenses Assigned to User

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/users/2/licenses" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/2/licenses"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/2/licenses';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/2/licenses'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=1kSYxtla0he5GDr5iKBHwxleDJnZrmZCNsr7DbNL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/users/{user}/licenses +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ user   +integer  +   + +
+

The user. Example: 2

+
+
+ +

Restore User

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/users/2/restore" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/2/restore"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/2/restore';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/2/restore'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/users/{user}/restore +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ user   +integer  +   + +
+

The user. Example: 2

+
+
+ +

List Users

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/users?search=John&filter=%7B%22last_name%22%3A%22Doe%22%2C%22first_name%22%3A%22John%22%7D&activated=1&admins=1&superadmins=1&company_id=1&phone=555-1234&mobile=555-5678&location_id=1&created_by=1&email=jdoe%40example.com&username=jdoe&first_name=John&last_name=Doe&display_name=John+Doe&employee_num=12345&state=CA&country=USA&website=https%3A%2F%2Fexample.com&zip=90210&group_id=1&department_id=1&manager_id=1&ldap_import=1&remote=1&vip=1&two_factor_enrolled=1" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users"
+);
+
+const params = {
+    "search": "John",
+    "filter": "{"last_name":"Doe","first_name":"John"}",
+    "activated": "1",
+    "admins": "1",
+    "superadmins": "1",
+    "company_id": "1",
+    "phone": "555-1234",
+    "mobile": "555-5678",
+    "location_id": "1",
+    "created_by": "1",
+    "email": "jdoe@example.com",
+    "username": "jdoe",
+    "first_name": "John",
+    "last_name": "Doe",
+    "display_name": "John Doe",
+    "employee_num": "12345",
+    "state": "CA",
+    "country": "USA",
+    "website": "https://example.com",
+    "zip": "90210",
+    "group_id": "1",
+    "department_id": "1",
+    "manager_id": "1",
+    "ldap_import": "1",
+    "remote": "1",
+    "vip": "1",
+    "two_factor_enrolled": "1",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'search' => 'John',
+            'filter' => '{"last_name":"Doe","first_name":"John"}',
+            'activated' => '1',
+            'admins' => '1',
+            'superadmins' => '1',
+            'company_id' => '1',
+            'phone' => '555-1234',
+            'mobile' => '555-5678',
+            'location_id' => '1',
+            'created_by' => '1',
+            'email' => 'jdoe@example.com',
+            'username' => 'jdoe',
+            'first_name' => 'John',
+            'last_name' => 'Doe',
+            'display_name' => 'John Doe',
+            'employee_num' => '12345',
+            'state' => 'CA',
+            'country' => 'USA',
+            'website' => 'https://example.com',
+            'zip' => '90210',
+            'group_id' => '1',
+            'department_id' => '1',
+            'manager_id' => '1',
+            'ldap_import' => '1',
+            'remote' => '1',
+            'vip' => '1',
+            'two_factor_enrolled' => '1',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users'
+params = {
+  'search': 'John',
+  'filter': '{"last_name":"Doe","first_name":"John"}',
+  'activated': '1',
+  'admins': '1',
+  'superadmins': '1',
+  'company_id': '1',
+  'phone': '555-1234',
+  'mobile': '555-5678',
+  'location_id': '1',
+  'created_by': '1',
+  'email': 'jdoe@example.com',
+  'username': 'jdoe',
+  'first_name': 'John',
+  'last_name': 'Doe',
+  'display_name': 'John Doe',
+  'employee_num': '12345',
+  'state': 'CA',
+  'country': 'USA',
+  'website': 'https://example.com',
+  'zip': '90210',
+  'group_id': '1',
+  'department_id': '1',
+  'manager_id': '1',
+  'ldap_import': '1',
+  'remote': '1',
+  'vip': '1',
+  'two_factor_enrolled': '1',
+}
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=svMpBgCg8Lm5Jzhs2MsnXhIHryI0BbXg3iVzyJkL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/users +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ search   +string  +optional   + +
+

Search term to filter results. Example: John

+
+
+ filter   +string  +optional   + +
+

JSON object of key/value pairs to filter results. Allowed keys: last_name, first_name, display_name, email, jobtitle, username, employee_num, groups, activated, created_at, updated_at, two_factor_enrolled, two_factor_optin, last_login, assets_count, licenses_count, consumables_count, accessories_count, manages_users_count, manages_locations_count, phone, mobile, address, city, state, country, zip, id, ldap_import, remote, vip, start_date, end_date, autoassign_licenses, website, locale, notes. Example: {"last_name":"Doe","first_name":"John"}

+
+
+ activated   +integer  +optional   + +
+

Filter by exact activation status. Allowed values: 0, 1. Example: 1

+
+
+ admins   +boolean  +optional   + + +
+

Filter to only admin and superadmin users. Allowed values: true, false. Example: true

+
+
+ superadmins   +boolean  +optional   + + +
+

Filter to only superadmin users. Allowed values: true, false. Example: true

+
+
+ company_id   +integer  +optional   + +
+

Filter by exact company ID. Example: 1

+
+
+ phone   +string  +optional   + +
+

Filter by exact phone number. Example: 555-1234

+
+
+ mobile   +string  +optional   + +
+

Filter by exact mobile number. Example: 555-5678

+
+
+ location_id   +integer  +optional   + +
+

Filter by exact location ID. Example: 1

+
+
+ created_by   +integer  +optional   + +
+

Filter by exact user ID who created the user. Example: 1

+
+
+ email   +string  +optional   + +
+

Filter by exact email address. Example: jdoe@example.com

+
+
+ username   +string  +optional   + +
+

Filter by exact username. Example: jdoe

+
+
+ first_name   +string  +optional   + +
+

Filter by exact first name. Example: John

+
+
+ last_name   +string  +optional   + +
+

Filter by exact last name. Example: Doe

+
+
+ display_name   +string  +optional   + +
+

Filter by exact display name. Example: John Doe

+
+
+ employee_num   +string  +optional   + +
+

Filter by exact employee number. Example: 12345

+
+
+ state   +string  +optional   + +
+

Filter by exact state. Example: CA

+
+
+ country   +string  +optional   + +
+

Filter by exact country. Example: USA

+
+
+ website   +string  +optional   + +
+

Filter by exact website URL. Example: https://example.com

+
+
+ zip   +string  +optional   + +
+

Filter by exact ZIP code. Example: 90210

+
+
+ group_id   +integer  +optional   + +
+

Filter by exact group ID. Example: 1

+
+
+ department_id   +integer  +optional   + +
+

Filter by exact department ID. Example: 1

+
+
+ manager_id   +integer  +optional   + +
+

Filter by exact manager (user) ID. Example: 1

+
+
+ ldap_import   +integer  +optional   + +
+

Filter by exact LDAP import status. Allowed values: 0, 1. Example: 1

+
+
+ remote   +integer  +optional   + +
+

Filter by exact remote status. Allowed values: 0, 1. Example: 1

+
+
+ vip   +integer  +optional   + +
+

Filter by exact VIP status. Allowed values: 0, 1. Example: 1

+
+
+ two_factor_enrolled   +integer  +optional   + +
+

Filter by exact two-factor authentication enrollment status. Allowed values: 0, 1. Example: 1

+
+
+ +

Create User

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://snipe-it.test/api/v1/api/v1/users" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/v1/users +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Show User

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://snipe-it.test/api/v1/api/v1/users/2" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/2"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/2';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/2'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (401):

+
+
+ + Show headers + +
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
+content-type: application/json
+vary: Origin
+pragma: no-cache
+expires: Sun, 02 Jan 1990 00:00:00 GMT
+x-content-type-options: nosniff
+feature-policy: accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'
+referrer-policy: same-origin
+content-security-policy: default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https://snipe-it.test https://avatars.githubusercontent.com/u/ https://www.google.com/images/branding/googlelogo/2x/ https://snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https://secure.gravatar.com http://gravatar.com maps.google.com maps.gstatic.com *.googleapis.com
+set-cookie: snipe-dev_local=UXj5Ks0zKIILl7fLIxnYGCgcKClmFZ1Nx8GEnqhC; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=/; secure; httponly; samesite=lax
+ 
+
+{
+    "error": "Unauthorized or unauthenticated."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v1/users/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the user. Example: 2

+
+
+ +

Update User

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://snipe-it.test/api/v1/api/v1/users/2" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/2"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/2';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/2'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('PUT', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/v1/users/{id} +

+

+ PATCH + api/v1/users/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the user. Example: 2

+
+
+ +

Delete User

+ +

+requires authentication +

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://snipe-it.test/api/v1/api/v1/users/2" \
+    --header "Authorization: Bearer 6g43cv8PD1aE5beadkZfhV6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://snipe-it.test/api/v1/api/v1/users/2"
+);
+
+const headers = {
+    "Authorization": "Bearer 6g43cv8PD1aE5beadkZfhV6",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://snipe-it.test/api/v1/api/v1/users/2';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'https://snipe-it.test/api/v1/api/v1/users/2'
+headers = {
+  'Authorization': 'Bearer 6g43cv8PD1aE5beadkZfhV6',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/v1/users/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer 6g43cv8PD1aE5beadkZfhV6

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the user. Example: 2

+
+
+ + + + +
+
+
+ + + + +
+
+
+ + diff --git a/storage/scribe/collection.json b/storage/scribe/collection.json new file mode 100644 index 000000000000..89324ab8a6dd --- /dev/null +++ b/storage/scribe/collection.json @@ -0,0 +1,12819 @@ +{ + "variable": [ + { + "id": "baseUrl", + "key": "baseUrl", + "type": "string", + "name": "string", + "value": "https:\/\/snipe-it.test\/api\/v1" + } + ], + "info": { + "name": "Evolu\u00e7\u00e3o local de snipe-it API Documentation", + "_postman_id": "d0913d96-57ce-4ac4-ae57-ef28f6448c99", + "description": "This documentation aims to provide the information you need to work with the Snipe-IT JSON REST API.", + "schema": "https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json" + }, + "item": [ + { + "name": "Accessories", + "description": "", + "item": [ + { + "name": "Show Accessory Checkouts", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/accessories\/:accessory\/checkedout", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/accessories\/:accessory\/checkedout", + "variable": [ + { + "id": "accessory", + "key": "accessory", + "value": "1", + "description": "The accessory." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=QwqPH3txF8T3F17zuocUxlzlAourAOPvfWbLeuj9; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Checkout Accessory", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/accessories\/:accessory_id\/checkout", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/accessories\/:accessory_id\/checkout", + "variable": [ + { + "id": "accessory_id", + "key": "accessory_id", + "value": "1", + "description": "The ID of the accessory." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "If Slack is enabled and\/or asset acceptance is enabled, it will also\ntrigger a Slack message and send an email." + }, + "response": [] + }, + { + "name": "Checkin Accessory", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/accessories\/:accessory\/checkin", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/accessories\/:accessory\/checkin", + "variable": [ + { + "id": "accessory", + "key": "accessory", + "value": "1", + "description": "The accessory." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Selectlist", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/accessories\/selectlist", + "query": [ + { + "key": "search", + "value": "", + "description": "A search term to filter results by name.", + "disabled": true + } + ], + "raw": "{{baseUrl}}\/api\/v1\/accessories\/selectlist?search=" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=kCGqdKxExAZopEwv7oy5l7SRnyqXXXDCU5Jyu7jU; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List accessories", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/accessories", + "query": [ + { + "key": "search", + "value": "keyboard", + "description": "A search term to filter results by.", + "disabled": false + }, + { + "key": "filter%5B%3Cfieldname%3E%5D", + "value": "architecto", + "description": "A field to filter by. Example", + "disabled": false + }, + { + "key": "company_id", + "value": "1", + "description": "Filter by company ID.", + "disabled": false + }, + { + "key": "category_id", + "value": "1", + "description": "Filter by category ID.", + "disabled": false + }, + { + "key": "manufacturer_id", + "value": "1", + "description": "Filter by manufacturer ID.", + "disabled": false + }, + { + "key": "supplier_id", + "value": "1", + "description": "Filter by supplier ID.", + "disabled": false + }, + { + "key": "location_id", + "value": "1", + "description": "Filter by location ID.", + "disabled": false + }, + { + "key": "notes", + "value": "For+office+use+only", + "description": "Filter by notes.", + "disabled": false + }, + { + "key": "offset", + "value": "", + "description": "The number of items to skip before starting to collect the result set.", + "disabled": true + }, + { + "key": "limit", + "value": "50", + "description": "The number of items to return.", + "disabled": false + }, + { + "key": "sort", + "value": "created_at", + "description": "The field to sort by.", + "disabled": false + }, + { + "key": "order", + "value": "desc", + "description": "The order to sort by.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/accessories?search=keyboard&filter%5B%3Cfieldname%3E%5D=architecto&company_id=1&category_id=1&manufacturer_id=1&supplier_id=1&location_id=1¬es=For+office+use+only&offset=&limit=50&sort=created_at&order=desc" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=2HABGaRbPqMGeiNPKWTPnN0AwM4t7W2yN4TFOJqm; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Accessory", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/accessories", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/accessories" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"Apple Bluetooth Keyboard\",\"qty\":10,\"category_id\":1}" + }, + "description": "" + }, + "response": [] + }, + { + "name": "Show Accessory", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/accessories\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/accessories\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the accessory." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=1Tv5gekmNofKNDwolDkOEcEH9JUfM9rX0PaTFfWI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update accessory.", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/accessories\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/accessories\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the accessory." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Accessory", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/accessories\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/accessories\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the accessory." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Account", + "description": "", + "item": [ + { + "name": "Display Requested Assets", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/account\/requests", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/account\/requests" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=qIWm6chVMaJXUcKG9E8EHhnb7F9wQT14AjEraiFE; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Display Accepted EULAs", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/account\/eulas", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/account\/eulas" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=nhItaWioeRLO0dKBgjno1X73ttHn50uXRQ7L7BAc; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Store Asset Request", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/account\/request\/:asset_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/account\/request\/:asset_id", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "1", + "description": "The ID of the asset." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Cancel Asset Request", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/account\/request\/:asset_id\/cancel", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/account\/request\/:asset_id\/cancel", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "1", + "description": "The ID of the asset." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Create API token", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/account\/personal-access-tokens", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/account\/personal-access-tokens" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show API tokens", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/account\/personal-access-tokens", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/account\/personal-access-tokens" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=yUjH3zpUXM18qZVCvvVEp1y5zfNNok8NctCrwGof; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Delete API token", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/account\/personal-access-tokens\/:tokenId", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/account\/personal-access-tokens\/:tokenId", + "variable": [ + { + "id": "tokenId", + "key": "tokenId", + "value": "architecto", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Assets", + "description": "", + "item": [ + { + "name": "Show Requestable Assets", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/account\/requestable\/hardware", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/account\/requestable\/hardware" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=9bkg2C4WhllCWmz0TI3hJlkOmzBIHtZh8c9EhOQi; expires=Sat, 18 Oct 2025 20:42:51 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Assets", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/reports\/depreciation", + "query": [ + { + "key": "action", + "value": "", + "description": "The action to filter by: audits, checkins.", + "disabled": true + }, + { + "key": "upcoming_status", + "value": "", + "description": "The status to filter by: `due`, `overdue`, `due-or-overdue`.", + "disabled": true + }, + { + "key": "status", + "value": "", + "description": "The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.", + "disabled": true + }, + { + "key": "status_id", + "value": "", + "description": "The asset status ID to filter by.", + "disabled": true + }, + { + "key": "asset_tag", + "value": "", + "description": "The asset tag to filter by.", + "disabled": true + }, + { + "key": "serial", + "value": "", + "description": "The serial number to filter by.", + "disabled": true + }, + { + "key": "requestable", + "value": "", + "description": "Filter by requestable assets.", + "disabled": true + }, + { + "key": "model_id", + "value": "", + "description": "The model ID or IDs to filter by.", + "disabled": true + }, + { + "key": "category_id", + "value": "", + "description": "The category ID to filter by.", + "disabled": true + }, + { + "key": "location_id", + "value": "", + "description": "The location ID to filter by.", + "disabled": true + }, + { + "key": "rtd_location_id", + "value": "", + "description": "The RTD location ID to filter by.", + "disabled": true + }, + { + "key": "supplier_id", + "value": "", + "description": "The supplier ID to filter by.", + "disabled": true + }, + { + "key": "asset_eol_date", + "value": "", + "description": "date The asset end-of-life date to filter by.", + "disabled": true + }, + { + "key": "assigned_to", + "value": "", + "description": "The user ID or department ID the asset is assigned to.", + "disabled": true + }, + { + "key": "assigned_type", + "value": "user", + "description": "The type of assignment, either 'user' or 'asset' or 'location'.", + "disabled": false + }, + { + "key": "company_id", + "value": "", + "description": "The company ID to filter by.", + "disabled": true + }, + { + "key": "manufacturer_id", + "value": "", + "description": "The manufacturer ID to filter by.", + "disabled": true + }, + { + "key": "depreciation_id", + "value": "", + "description": "The depreciation ID to filter by.", + "disabled": true + }, + { + "key": "byod", + "value": "1", + "description": "Filter by BYOD assets.", + "disabled": false + }, + { + "key": "order_number", + "value": "", + "description": "The order number to filter by. Example:", + "disabled": true + }, + { + "key": "search", + "value": "", + "description": "A text string to search for. Example:", + "disabled": true + }, + { + "key": "filter", + "value": "", + "description": "A JSON object of key\/value pairs to filter by.", + "disabled": true + } + ], + "raw": "{{baseUrl}}\/api\/v1\/reports\/depreciation?action=&upcoming_status=&status=&status_id=&asset_tag=&serial=&requestable=&model_id=&category_id=&location_id=&rtd_location_id=&supplier_id=&asset_eol_date=&assigned_to=&assigned_type=user&company_id=&manufacturer_id=&depreciation_id=&byod=1&order_number=&search=&filter=" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=1RCnTHUFbqwTIQa5a3jw9Z163XXINM8alyMsLk0F; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Selectlist", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/selectlist", + "query": [ + { + "key": "%24search", + "value": "", + "description": "String to search on.", + "disabled": true + }, + { + "key": "%24companyId", + "value": "", + "description": "Company ID to filter by.", + "disabled": true + }, + { + "key": "%24assetStatusType", + "value": "", + "description": "The asset status type to filter by: `RTD`.", + "disabled": true + } + ], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/selectlist?%24search=&%24companyId=&%24assetStatusType=" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=0J6iH1gl0c15eGQzbr0AXYKNPWvATyX8x6OsoSrW; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Licenses Assigned to Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:asset_id\/licenses", + "query": [ + { + "key": "%24assetId", + "value": "1", + "description": "The asset ID.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:asset_id\/licenses?%24assetId=1", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "architecto", + "description": "The ID of the asset." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=fG7jXtcAYCvTOFyyGxGIuUODAbj1PT5ZAaug4SRy; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Lookup by Tag", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/bytag\/:tag", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/bytag\/:tag", + "variable": [ + { + "id": "tag", + "key": "tag", + "value": "1", + "description": "The asset tag." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=JUM59W5u4D1Jdj1Ai98JgFlM3Ts8igVm7P7mFeXB; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Lookup by Tag", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/bytag\/:any", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/bytag\/:any", + "variable": [ + { + "id": "any", + "key": "any", + "value": "%7C%7B%2B-0p", + "description": "" + }, + { + "id": "tag", + "key": "tag", + "value": "1", + "description": "The asset tag." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=VJrksR9BVpURY1sWO0ib6MKfDb6nIxMa2pVIQr5p; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Checkout by Asset Tag", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/bytag\/:any\/checkout", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/bytag\/:any\/checkout", + "variable": [ + { + "id": "any", + "key": "any", + "value": "architecto", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Checkin by Asset Tag", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/bytag\/:any\/checkin", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/bytag\/:any\/checkin", + "variable": [ + { + "id": "any", + "key": "any", + "value": "architecto", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Checkin by Asset Tag", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/checkinbytag", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/checkinbytag" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Lookup by Serial", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/byserial\/:any", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/byserial\/:any", + "variable": [ + { + "id": "any", + "key": "any", + "value": "%7C%7B%2B-0p", + "description": "" + }, + { + "id": "serial", + "key": "serial", + "value": "architecto", + "description": "" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=llOTTmFchjax52EyYJzjxhiyZiEXIBU0ZcfnoN6T; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Assets", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:action\/:upcoming_status", + "query": [ + { + "key": "action", + "value": "", + "description": "The action to filter by: audits, checkins.", + "disabled": true + }, + { + "key": "upcoming_status", + "value": "", + "description": "The status to filter by: `due`, `overdue`, `due-or-overdue`.", + "disabled": true + }, + { + "key": "status", + "value": "", + "description": "The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.", + "disabled": true + }, + { + "key": "status_id", + "value": "", + "description": "The asset status ID to filter by.", + "disabled": true + }, + { + "key": "asset_tag", + "value": "", + "description": "The asset tag to filter by.", + "disabled": true + }, + { + "key": "serial", + "value": "", + "description": "The serial number to filter by.", + "disabled": true + }, + { + "key": "requestable", + "value": "", + "description": "Filter by requestable assets.", + "disabled": true + }, + { + "key": "model_id", + "value": "", + "description": "The model ID or IDs to filter by.", + "disabled": true + }, + { + "key": "category_id", + "value": "", + "description": "The category ID to filter by.", + "disabled": true + }, + { + "key": "location_id", + "value": "", + "description": "The location ID to filter by.", + "disabled": true + }, + { + "key": "rtd_location_id", + "value": "", + "description": "The RTD location ID to filter by.", + "disabled": true + }, + { + "key": "supplier_id", + "value": "", + "description": "The supplier ID to filter by.", + "disabled": true + }, + { + "key": "asset_eol_date", + "value": "", + "description": "date The asset end-of-life date to filter by.", + "disabled": true + }, + { + "key": "assigned_to", + "value": "", + "description": "The user ID or department ID the asset is assigned to.", + "disabled": true + }, + { + "key": "assigned_type", + "value": "user", + "description": "The type of assignment, either 'user' or 'asset' or 'location'.", + "disabled": false + }, + { + "key": "company_id", + "value": "", + "description": "The company ID to filter by.", + "disabled": true + }, + { + "key": "manufacturer_id", + "value": "", + "description": "The manufacturer ID to filter by.", + "disabled": true + }, + { + "key": "depreciation_id", + "value": "", + "description": "The depreciation ID to filter by.", + "disabled": true + }, + { + "key": "byod", + "value": "1", + "description": "Filter by BYOD assets.", + "disabled": false + }, + { + "key": "order_number", + "value": "", + "description": "The order number to filter by. Example:", + "disabled": true + }, + { + "key": "search", + "value": "", + "description": "A text string to search for. Example:", + "disabled": true + }, + { + "key": "filter", + "value": "", + "description": "A JSON object of key\/value pairs to filter by.", + "disabled": true + } + ], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:action\/:upcoming_status?action=&upcoming_status=&status=&status_id=&asset_tag=&serial=&requestable=&model_id=&category_id=&location_id=&rtd_location_id=&supplier_id=&asset_eol_date=&assigned_to=&assigned_type=user&company_id=&manufacturer_id=&depreciation_id=&byod=1&order_number=&search=&filter=", + "variable": [ + { + "id": "action", + "key": "action", + "value": "audit%7Caudits%7Ccheckins", + "description": "" + }, + { + "id": "upcoming_status", + "key": "upcoming_status", + "value": "due%7Coverdue%7Cdue-or-overdue", + "description": "" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=jun9NCBvUvQJXjBPXHEgZB9NPzF1mS6NTwzDmHDe; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Audit Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/audit", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/audit" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Audit Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:asset_id\/audit", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:asset_id\/audit", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "1", + "description": "The ID of the asset." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Checkin Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:id\/checkin", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:id\/checkin", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the hardware." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Checkout Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:id\/checkout", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:id\/checkout", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the hardware." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Restore Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:asset_id\/restore", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:asset_id\/restore", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "architecto", + "description": "The ID of the asset." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Assets Assigned to Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:asset_id\/assigned\/assets", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:asset_id\/assigned\/assets", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "1", + "description": "The ID of the asset." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=DIPJZUWSuyNUFLyBNwFMer4zkxMi0tReW3dy4QPK; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Accessories Assigned to Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:asset_id\/assigned\/accessories", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:asset_id\/assigned\/accessories", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "1", + "description": "The ID of the asset." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=F9Wogg2lFVX0DlkB6ZfYreUAmJeGi8jFA5O8VrAI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Components Assigned to Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:asset_id\/assigned\/components", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:asset_id\/assigned\/components", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "1", + "description": "The ID of the asset." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=bKDaNYTiCn9wzCQETCLfjwUEaIXEpCWfmHVEAfUz; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:asset_id", + "query": [ + { + "key": "model_id", + "value": "1", + "description": "The model ID to associate the asset with.", + "disabled": false + }, + { + "key": "company_id", + "value": "1", + "description": "The company ID to associate the asset with.", + "disabled": false + }, + { + "key": "rtd_location_id", + "value": "1", + "description": "The RTD location ID to associate the asset with.", + "disabled": false + }, + { + "key": "last_audit_date", + "value": "2023-12-31", + "description": "date The last audit date for the asset.", + "disabled": false + }, + { + "key": "image", + "value": "%28binary%29", + "description": "file The image file to upload for the asset.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:asset_id?model_id=1&company_id=1&rtd_location_id=1&last_audit_date=2023-12-31&image=%28binary%29", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "1", + "description": "The ID of the asset." + } + ] + }, + "method": "PATCH", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Update Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:asset_id", + "query": [ + { + "key": "model_id", + "value": "1", + "description": "The model ID to associate the asset with.", + "disabled": false + }, + { + "key": "company_id", + "value": "1", + "description": "The company ID to associate the asset with.", + "disabled": false + }, + { + "key": "rtd_location_id", + "value": "1", + "description": "The RTD location ID to associate the asset with.", + "disabled": false + }, + { + "key": "last_audit_date", + "value": "2023-12-31", + "description": "date The last audit date for the asset.", + "disabled": false + }, + { + "key": "image", + "value": "%28binary%29", + "description": "file The image file to upload for the asset.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:asset_id?model_id=1&company_id=1&rtd_location_id=1&last_audit_date=2023-12-31&image=%28binary%29", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "1", + "description": "The ID of the asset." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Assets", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware", + "query": [ + { + "key": "action", + "value": "", + "description": "The action to filter by: audits, checkins.", + "disabled": true + }, + { + "key": "upcoming_status", + "value": "", + "description": "The status to filter by: `due`, `overdue`, `due-or-overdue`.", + "disabled": true + }, + { + "key": "status", + "value": "", + "description": "The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.", + "disabled": true + }, + { + "key": "status_id", + "value": "", + "description": "The asset status ID to filter by.", + "disabled": true + }, + { + "key": "asset_tag", + "value": "", + "description": "The asset tag to filter by.", + "disabled": true + }, + { + "key": "serial", + "value": "", + "description": "The serial number to filter by.", + "disabled": true + }, + { + "key": "requestable", + "value": "", + "description": "Filter by requestable assets.", + "disabled": true + }, + { + "key": "model_id", + "value": "", + "description": "The model ID or IDs to filter by.", + "disabled": true + }, + { + "key": "category_id", + "value": "", + "description": "The category ID to filter by.", + "disabled": true + }, + { + "key": "location_id", + "value": "", + "description": "The location ID to filter by.", + "disabled": true + }, + { + "key": "rtd_location_id", + "value": "", + "description": "The RTD location ID to filter by.", + "disabled": true + }, + { + "key": "supplier_id", + "value": "", + "description": "The supplier ID to filter by.", + "disabled": true + }, + { + "key": "asset_eol_date", + "value": "", + "description": "date The asset end-of-life date to filter by.", + "disabled": true + }, + { + "key": "assigned_to", + "value": "", + "description": "The user ID or department ID the asset is assigned to.", + "disabled": true + }, + { + "key": "assigned_type", + "value": "user", + "description": "The type of assignment, either 'user' or 'asset' or 'location'.", + "disabled": false + }, + { + "key": "company_id", + "value": "", + "description": "The company ID to filter by.", + "disabled": true + }, + { + "key": "manufacturer_id", + "value": "", + "description": "The manufacturer ID to filter by.", + "disabled": true + }, + { + "key": "depreciation_id", + "value": "", + "description": "The depreciation ID to filter by.", + "disabled": true + }, + { + "key": "byod", + "value": "1", + "description": "Filter by BYOD assets.", + "disabled": false + }, + { + "key": "order_number", + "value": "", + "description": "The order number to filter by. Example:", + "disabled": true + }, + { + "key": "search", + "value": "", + "description": "A text string to search for. Example:", + "disabled": true + }, + { + "key": "filter", + "value": "", + "description": "A JSON object of key\/value pairs to filter by.", + "disabled": true + } + ], + "raw": "{{baseUrl}}\/api\/v1\/hardware?action=&upcoming_status=&status=&status_id=&asset_tag=&serial=&requestable=&model_id=&category_id=&location_id=&rtd_location_id=&supplier_id=&asset_eol_date=&assigned_to=&assigned_type=user&company_id=&manufacturer_id=&depreciation_id=&byod=1&order_number=&search=&filter=" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=OpEopdxJjQ1quNst6C1aE9VzEFgonGA6WTKO283D; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:hardware", + "query": [ + { + "key": "%24assetId", + "value": "1", + "description": "The asset ID.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:hardware?%24assetId=1", + "variable": [ + { + "id": "hardware", + "key": "hardware", + "value": "architecto", + "description": "The hardware." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=DivpAbTSWduaC7mBZSElSCp2pLYXeny0mPAaJbuq; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Delete Asset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/:hardware", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/:hardware", + "variable": [ + { + "id": "hardware", + "key": "hardware", + "value": "architecto", + "description": "The hardware." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Generate Label by Asset Tag", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/hardware\/labels", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/hardware\/labels" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Categories", + "description": "", + "item": [ + { + "name": "Selectlist", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/categories\/:item_type\/selectlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/categories\/:item_type\/selectlist", + "variable": [ + { + "id": "item_type", + "key": "item_type", + "value": "architecto", + "description": "" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=Wy5FSLyBn1xpLQy08hVrBlmoANJohF4ZIzpEcIZy; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Categories", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/categories", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/categories" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=ErvltKvHZdVobMWCabFa83cWRCOTTtIgAPf7kLWS; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Category", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/categories", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/categories" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Category", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/categories\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/categories\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the category." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=V2YFWiG0waCLFesMFr3kkLb0Io41yz4MPzVEfytq; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Category", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/categories\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/categories\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the category." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Category", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/categories\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/categories\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the category." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Companies", + "description": "", + "item": [ + { + "name": "Selectlist", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/companies\/selectlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/companies\/selectlist" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=IqjgsK1DVTQS5qlZI7l96rTJH0m95aILfWx6eAS2; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Companies", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/companies", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/companies" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=cEVlfAwtjQtu004rU9aEgFwcozHbApb3l0gEpL3C; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Company", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/companies", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/companies" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Company", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/companies\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/companies\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the company." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=YqczMPKZfCp7CKkULGsRoDqufIWQ9yGkni3Cto4R; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Company", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/companies\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/companies\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the company." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Company", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/companies\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/companies\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the company." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Components", + "description": "", + "item": [ + { + "name": "Component Assets", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/components\/:component\/assets", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/components\/:component\/assets", + "variable": [ + { + "id": "component", + "key": "component", + "value": "3", + "description": "The component." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=wiPOiV7Xae1fyzS2Jv3w9d060WDRgnET70IrBjTj; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Checkin Component", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/components\/:id\/checkin", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/components\/:id\/checkin", + "variable": [ + { + "id": "id", + "key": "id", + "value": "3", + "description": "The ID of the component." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Checkout Component", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/components\/:id\/checkout", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/components\/:id\/checkout", + "variable": [ + { + "id": "id", + "key": "id", + "value": "3", + "description": "The ID of the component." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"assigned_to\":\"architecto\"}" + }, + "description": "" + }, + "response": [] + }, + { + "name": "List Categories", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/components", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/components" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=vXpBDH4e4puagaeAOAWHnpHEOQ7rCwXKeEDeGn5W; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Component", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/components", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/components" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Component", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/components\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/components\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "3", + "description": "The ID of the component." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=mIFtURJNZowrCIpSMAMYNVYW5XvKIReOCIJ57XgL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Component", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/components\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/components\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "3", + "description": "The ID of the component." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Component", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/components\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/components\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "3", + "description": "The ID of the component." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Consumables", + "description": "", + "item": [ + { + "name": "Selectlist", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/consumables\/selectlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/consumables\/selectlist" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=9SzZeaG6J8yoJtsrcqY5kJPcLvX7ObZeYK0JivkB; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "User Assignments", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/consumables\/:id\/users", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/consumables\/:id\/users", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the consumable." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=eO7NKRGNCHJ34NL6woGI5Ux80o2tg9rIBW0LuGGd; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Checkout Consumable", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/consumables\/:consumable\/checkout", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/consumables\/:consumable\/checkout", + "variable": [ + { + "id": "consumable", + "key": "consumable", + "value": "1", + "description": "The consumable." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Consumables", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/consumables", + "query": [ + { + "key": "filter", + "value": "%7B%22company%22%3A%221%22%2C%22location%22%3A%222%22%7D", + "description": "A JSON encoded array of key\/value pairs to filter results by.", + "disabled": false + }, + { + "key": "search", + "value": "architecto", + "description": "A search term to filter results by.", + "disabled": false + }, + { + "key": "name", + "value": "architecto", + "description": "Filter by exact name.", + "disabled": false + }, + { + "key": "company_id", + "value": "16", + "description": "Filter by exact company ID.", + "disabled": false + }, + { + "key": "category_id", + "value": "16", + "description": "Filter by exact category ID.", + "disabled": false + }, + { + "key": "model_number", + "value": "architecto", + "description": "Filter by exact model number.", + "disabled": false + }, + { + "key": "manufacturer_id", + "value": "16", + "description": "Filter by exact manufacturer ID.", + "disabled": false + }, + { + "key": "supplier_id", + "value": "16", + "description": "Filter by exact supplier ID.", + "disabled": false + }, + { + "key": "location_id", + "value": "16", + "description": "Filter by exact location ID.", + "disabled": false + }, + { + "key": "notes", + "value": "architecto", + "description": "Filter by exact notes.", + "disabled": false + }, + { + "key": "sort", + "value": "architecto", + "description": "The column to sort results by. Must be one of the following: id, name, order_number, min_amt, purchase_date, purchase_cost, company, category, model_number, item_no, manufacturer, location, qty, image, company, location, category, supplier, manufacturer. Default is created_at.", + "disabled": false + }, + { + "key": "order", + "value": "architecto", + "description": "The order to sort results by. Must be one of the following: asc, desc. Default is desc.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/consumables?filter=%7B%22company%22%3A%221%22%2C%22location%22%3A%222%22%7D&search=architecto&name=architecto&company_id=16&category_id=16&model_number=architecto&manufacturer_id=16&supplier_id=16&location_id=16¬es=architecto&sort=architecto&order=architecto" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=WMv6quPUXaLnZTkEXk5aBwdTDMuUgt7fQTd6uLZf; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Store a newly created resource in storage.", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/consumables", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/consumables" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Consumable", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/consumables\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/consumables\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the consumable." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=oTfWSAjrq9p5g7qEYt7eFY4Dl7io060HverF1daF; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Consumable", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/consumables\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/consumables\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the consumable." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Consumable", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/consumables\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/consumables\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the consumable." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Custom Fields", + "description": "", + "item": [ + { + "name": "Reorder Fields", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fields\/fieldsets\/:id\/order", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fields\/fieldsets\/:id\/order", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the fieldset." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Add Field to Fieldset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fields\/:field\/associate", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fields\/:field\/associate", + "variable": [ + { + "id": "field", + "key": "field", + "value": "architecto", + "description": "The field." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Remove Field from Fieldset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fields\/:field\/disassociate", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fields\/:field\/disassociate", + "variable": [ + { + "id": "field", + "key": "field", + "value": "architecto", + "description": "The field." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Custom Fields", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fields", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fields" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=MTrOxDhLsWMBw1aLYKK9q1GA3VjT43PhCRp7KBa9; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Field", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fields", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fields" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Field", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fields\/:field", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fields\/:field", + "variable": [ + { + "id": "field", + "key": "field", + "value": "architecto", + "description": "The field." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=jdlBn85i46xp3MdUb7Dbb1igonFqeCNdzQwTOmnl; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Field", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fields\/:field", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fields\/:field", + "variable": [ + { + "id": "field", + "key": "field", + "value": "architecto", + "description": "The field." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Field", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fields\/:field", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fields\/:field", + "variable": [ + { + "id": "field", + "key": "field", + "value": "architecto", + "description": "The field." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Custom Fieldsets", + "description": "", + "item": [ + { + "name": "Show Fields in Fieldset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fieldsets\/:fieldset\/fields", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fieldsets\/:fieldset\/fields", + "variable": [ + { + "id": "fieldset", + "key": "fieldset", + "value": "architecto", + "description": "The fieldset." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Fields in Fieldset with Default Values for Model", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fieldsets\/:fieldset\/fields\/:model", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fieldsets\/:fieldset\/fields\/:model", + "variable": [ + { + "id": "fieldset", + "key": "fieldset", + "value": "architecto", + "description": "The fieldset." + }, + { + "id": "model", + "key": "model", + "value": "architecto", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Fieldsets", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fieldsets", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fieldsets" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=DtH1Q5VV2HTu9NhlX5CxdYBImN4ZqxolMxRmhDyk; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Fieldset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fieldsets", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fieldsets" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Fieldset and Fields", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fieldsets\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fieldsets\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the fieldset." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=haApTgbAdDCFdvIN3hU8DshPXbfKMRdlXqBMBKdM; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Fieldset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fieldsets\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fieldsets\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the fieldset." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Fieldset", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/fieldsets\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/fieldsets\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the fieldset." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + } + ] + }, + { + "name": "Departments", + "description": "", + "item": [ + { + "name": "Selectlist", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/departments\/selectlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/departments\/selectlist" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=0Ld2mnJEdBRIaREXQ37xGTuIS9SWJ4pT3WC79wc3; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Departments", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/departments", + "query": [ + { + "key": "search", + "value": "IT", + "description": "Search term to filter results.", + "disabled": false + }, + { + "key": "name", + "value": "IT", + "description": "Filter by exact department name.", + "disabled": false + }, + { + "key": "company_id", + "value": "1", + "description": "Filter by exact company ID.", + "disabled": false + }, + { + "key": "manager_id", + "value": "16", + "description": "Filter by exact manager (user) ID. Example:", + "disabled": false + }, + { + "key": "location_id", + "value": "1", + "description": "Filter by exact location ID.", + "disabled": false + }, + { + "key": "sort", + "value": "name", + "description": "Column to sort results by. Allowed values: id, name, image, users_count, notes, created_at, updated_at, location, manager, company. Default: created_at.", + "disabled": false + }, + { + "key": "order", + "value": "asc", + "description": "Order of sorted results. Allowed values: asc, desc. Default: desc.", + "disabled": false + }, + { + "key": "offset", + "value": "", + "description": "Offset\/starting position of the results. Default: 0.", + "disabled": true + }, + { + "key": "limit", + "value": "50", + "description": "Limit the number of results returned. Default: 25. Maximum: 100.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/departments?search=IT&name=IT&company_id=1&manager_id=16&location_id=1&sort=name&order=asc&offset=&limit=50" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=A3I9GYZHlismQEeDjfx7XM9EFccWImskxth6x9OH; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Department", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/departments", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/departments" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Department", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/departments\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/departments\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the department." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=f5nA1I31NqT4m4T3BeSDmKt2LuBQs7KtcZZNRDKq; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Department", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/departments\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/departments\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the department." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Department", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/departments\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/departments\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the department." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Depreciations", + "description": "", + "item": [ + { + "name": "List Depreciations", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/depreciations", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/depreciations" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=TaZAI56rS9h74YByHlSA9ZrXGsTjQD4onwKaqiFF; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Depreciation", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/depreciations", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/depreciations" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Depreciation", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/depreciations\/:depreciation_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/depreciations\/:depreciation_id", + "variable": [ + { + "id": "depreciation_id", + "key": "depreciation_id", + "value": "architecto", + "description": "The ID of the depreciation." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=qFky4u180BfuHQB1d4a5A7K5Q4MOHcVdqELFA4ow; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Depreciation", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/depreciations\/:depreciation_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/depreciations\/:depreciation_id", + "variable": [ + { + "id": "depreciation_id", + "key": "depreciation_id", + "value": "architecto", + "description": "The ID of the depreciation." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Depreciation", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/depreciations\/:depreciation_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/depreciations\/:depreciation_id", + "variable": [ + { + "id": "depreciation_id", + "key": "depreciation_id", + "value": "architecto", + "description": "The ID of the depreciation." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Files", + "description": "", + "item": [ + { + "name": "List Files for an Object", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/:object_type\/:id\/files", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/:object_type\/:id\/files", + "variable": [ + { + "id": "object_type", + "key": "object_type", + "value": "accessories%7Cassets%7Ccomponents%7Cconsumables%7Chardware%7Clicenses%7Clocations%7Cmaintenances%7Cmodels%7Cusers", + "description": "" + }, + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the {object type}." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=HfR9HTwK8SuIGE2OuiaImTbUpBhp1HtUBHMeilHy; expires=Sat, 18 Oct 2025 20:42:53 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Display File", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/:object_type\/:id\/files\/:file_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/:object_type\/:id\/files\/:file_id", + "variable": [ + { + "id": "object_type", + "key": "object_type", + "value": "accessories%7Cassets%7Ccomponents%7Cconsumables%7Chardware%7Clicenses%7Clocations%7Cmaintenances%7Cmodels%7Cusers", + "description": "" + }, + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the {object type}." + }, + { + "id": "file_id", + "key": "file_id", + "value": "architecto", + "description": "The ID of the file." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=N688uqN5BWG2WKvT3v6TxAJAl1Il05lzaTycQ40x; expires=Sat, 18 Oct 2025 20:42:53 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Upload File to an Object", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/:object_type\/:id\/files", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/:object_type\/:id\/files", + "variable": [ + { + "id": "object_type", + "key": "object_type", + "value": "accessories%7Cassets%7Ccomponents%7Cconsumables%7Chardware%7Clicenses%7Clocations%7Cmaintenances%7Cmodels%7Cusers", + "description": "" + }, + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the {object type}." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete File", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/:object_type\/:id\/files\/:file_id\/delete", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/:object_type\/:id\/files\/:file_id\/delete", + "variable": [ + { + "id": "object_type", + "key": "object_type", + "value": "accessories%7Cassets%7Ccomponents%7Cconsumables%7Chardware%7Clicenses%7Clocations%7Cmaintenances%7Cmodels%7Cusers", + "description": "" + }, + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the {object type}." + }, + { + "id": "file_id", + "key": "file_id", + "value": "architecto", + "description": "The ID of the file." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Imports", + "description": "", + "item": [ + { + "name": "Process Import", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/imports\/process\/:import", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/imports\/process\/:import", + "variable": [ + { + "id": "import", + "key": "import", + "value": "architecto", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Import Files", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/imports", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/imports" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=lj8o7doJNMvuEIVNyZKehmNRHGnHDPN2afmwMD6i; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Save Import File", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/imports", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/imports" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Import File", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/imports\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/imports\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the import." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Labels", + "description": "", + "item": [ + { + "name": "Show Label", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/labels\/:name", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/labels\/:name", + "variable": [ + { + "id": "name", + "key": "name", + "value": "%7C%7B%2B-0p", + "description": "" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=rEUcrmsA92vKXWOMa9gjkZircoRHtwh2NGzh46Ym; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Labels", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/labels", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/labels" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=uOfOzJMa5lIhRnkxrSV7W6Lh6At2caeav8pgRq3i; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + } + ] + }, + { + "name": "Licenses", + "description": "", + "item": [ + { + "name": "Selectlist", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/licenses\/selectlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/licenses\/selectlist" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=WCUA668q64Tb6nEAAMH6QDj0KxiWwfnKfCVC1WL5; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Licenses", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/licenses", + "query": [ + { + "key": "status", + "value": "%3Fstatus%3Dactive", + "description": "Filter by license status. Options: active, inactive, expiring", + "disabled": false + }, + { + "key": "company_id", + "value": "1", + "description": "Filter by exact company ID.", + "disabled": false + }, + { + "key": "name", + "value": "Microsoft+365", + "description": "Filter by exact license name.", + "disabled": false + }, + { + "key": "product_key", + "value": "W269N", + "description": "Filter by exact product key.", + "disabled": false + }, + { + "key": "order_number", + "value": "12345", + "description": "Filter by exact order number.", + "disabled": false + }, + { + "key": "purchase_order", + "value": "PO12345", + "description": "Filter by exact purchase order.", + "disabled": false + }, + { + "key": "license_name", + "value": "John+Doe", + "description": "Filter by exact licensee name.", + "disabled": false + }, + { + "key": "license_email", + "value": "john.d", + "description": "Filter by exact licensee email.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/licenses?status=%3Fstatus%3Dactive&company_id=1&name=Microsoft+365&product_key=W269N&order_number=12345&purchase_order=PO12345&license_name=John+Doe&license_email=john.d" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=FsSfFEzLbFI2oqcTFwXV523YHYRteVgVbhwU1KjU; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create License", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/licenses", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/licenses" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show License", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/licenses\/:license_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/licenses\/:license_id", + "variable": [ + { + "id": "license_id", + "key": "license_id", + "value": "1", + "description": "The ID of the license." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=fr7kJMaaASq4b53DwioCqOIG1A7k7COxiBsYFjXL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update License", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/licenses\/:license_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/licenses\/:license_id", + "variable": [ + { + "id": "license_id", + "key": "license_id", + "value": "1", + "description": "The ID of the license." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete License", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/licenses\/:license_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/licenses\/:license_id", + "variable": [ + { + "id": "license_id", + "key": "license_id", + "value": "1", + "description": "The ID of the license." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "License Seats", + "description": "", + "item": [ + { + "name": "List License Seats", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/licenses\/:license_id\/seats", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/licenses\/:license_id\/seats", + "variable": [ + { + "id": "license_id", + "key": "license_id", + "value": "1", + "description": "The ID of the license." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=StfngPkbKXNpOhusZSc3gJVfFrY1dHeurAa4otwt; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Show License Seat", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/licenses\/:license_id\/seats\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/licenses\/:license_id\/seats\/:id", + "variable": [ + { + "id": "license_id", + "key": "license_id", + "value": "1", + "description": "The ID of the license." + }, + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the seat." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=4NcQjrTDkyy5Ps1lwLlvwwkW8zLNdvkt4jLniAbj; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update License Seat", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/licenses\/:license_id\/seats\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/licenses\/:license_id\/seats\/:id", + "variable": [ + { + "id": "license_id", + "key": "license_id", + "value": "1", + "description": "The ID of the license." + }, + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the seat." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + } + ] + }, + { + "name": "Locations", + "description": "", + "item": [ + { + "name": "Gets a paginated collection for the select2 menus", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/locations\/selectlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/locations\/selectlist" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "This is handled slightly differently as of ~4.7.8-pre, as\nwe have to do some recursive magic to get the hierarchy to display\nproperly when looking at the parent\/child relationship in the\nrich menus.\n\nThis means we can't use the normal pagination that we use elsewhere\nin our selectlists, since we have to get the full set before we can\ndetermine which location is parent\/child\/grandchild, etc.\n\nThis also means that hierarchy display gets a little funky when people\nuse the Select2 search functionality, but there's not much we can do about\nthat right now.\n\nAs a result, instead of paginating as part of the query, we have to grab\nthe entire data set, and then invoke a paginator manually and pass that\nthrough to the SelectListTransformer.\n\nMany thanks to @uberbrady for the help getting this working better.\nRecursion still sucks, but I guess he doesn't have to get in the\nsea... this time." + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=UpVwalXoUKqNpdc1JZOoxLIbtfuGTDjmXv2FL0U4; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Show Assets with Default Location", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/locations\/:location_id\/assets", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/locations\/:location_id\/assets", + "variable": [ + { + "id": "location_id", + "key": "location_id", + "value": "1", + "description": "The ID of the location." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=s6eLrXoHfx9aHRHsGokhuXGIfcWMyMK6s8Y7CuQb; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Show Assets Assigned to Location", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/locations\/:location_id\/assigned\/assets", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/locations\/:location_id\/assigned\/assets", + "variable": [ + { + "id": "location_id", + "key": "location_id", + "value": "1", + "description": "The ID of the location." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=6IjNjFVBRoxfcpk3lgt97JCcwcwkJ18MblUUArEa; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Show Accessories Assigned to Location", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/locations\/:location_id\/assigned\/accessories", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/locations\/:location_id\/assigned\/accessories", + "variable": [ + { + "id": "location_id", + "key": "location_id", + "value": "1", + "description": "The ID of the location." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=8QVLWPz9VFdTVM9oelFsOvXEnefwKOeIuos7D23G; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Locations", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/locations", + "query": [ + { + "key": "search", + "value": "Headquarters", + "description": "Search term to filter results.", + "disabled": false + }, + { + "key": "name", + "value": "Headquarters", + "description": "Filter by exact location name.", + "disabled": false + }, + { + "key": "address", + "value": "123+Main+St", + "description": "Filter by exact address.", + "disabled": false + }, + { + "key": "address2", + "value": "Suite+100", + "description": "Filter by exact address2.", + "disabled": false + }, + { + "key": "city", + "value": "Springfield", + "description": "Filter by exact city.", + "disabled": false + }, + { + "key": "zip", + "value": "12345", + "description": "Filter by exact zip code.", + "disabled": false + }, + { + "key": "country", + "value": "USA", + "description": "Filter by exact country.", + "disabled": false + }, + { + "key": "manager_id", + "value": "1", + "description": "Filter by exact manager (user) ID.", + "disabled": false + }, + { + "key": "company_id", + "value": "1", + "description": "Filter by exact company ID.", + "disabled": false + }, + { + "key": "parent_id", + "value": "1", + "description": "Filter by exact parent location ID.", + "disabled": false + }, + { + "key": "status", + "value": "active", + "description": "Filter by location status. Allowed values: active, deleted.", + "disabled": false + }, + { + "key": "sort", + "value": "name", + "description": "Column to sort results by. Allowed values: accessorries_count, address, address2, assets_count, assigned_assets_count, rtd_assets_count, accessories_count, assigned_accessories_count, components_count, consumables_count, users_count, children_count, city, country, created_at, currency, id, image, ldap_ou, company_id, manager_id, name, rtd_assets_count, state, updated_at, zip. Default: created_at.", + "disabled": false + }, + { + "key": "order", + "value": "asc", + "description": "Order of sorted results. Allowed values: asc, desc. Default: desc.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/locations?search=Headquarters&name=Headquarters&address=123+Main+St&address2=Suite+100&city=Springfield&zip=12345&country=USA&manager_id=1&company_id=1&parent_id=1&status=active&sort=name&order=asc" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=OrGO92pRr2bN1MO0HEk74EaOyIBpyNWW8nBBM9w1; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Location", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/locations", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/locations" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Location", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/locations\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/locations\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the location." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=r40jhYlCjVborgeetW7XFFJzC3FPckbK3wiqaq9b; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Location", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/locations\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/locations\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the location." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Location", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/locations\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/locations\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the location." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Maintenances", + "description": "", + "item": [ + { + "name": "List Maintenances", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/maintenances", + "query": [ + { + "key": "search", + "value": "repair", + "description": "Search term to filter results.", + "disabled": false + }, + { + "key": "asset_id", + "value": "1", + "description": "Filter by exact asset ID.", + "disabled": false + }, + { + "key": "supplier_id", + "value": "1", + "description": "Filter by exact supplier ID.", + "disabled": false + }, + { + "key": "created_by", + "value": "16", + "description": "Filter by exact user ID who created the maintenance. Example", + "disabled": false + }, + { + "key": "url", + "value": "http%3A%2F%2Fexample.com", + "description": "Filter by exact URL.", + "disabled": false + }, + { + "key": "asset_maintenance_type", + "value": "repair", + "description": "Filter by exact maintenance type.", + "disabled": false + }, + { + "key": "sort", + "value": "name", + "description": "Column to sort results by. Allowed values: id, name, asset_maintenance_time, asset_maintenance_type, cost, start_date, completion_date, notes, asset_tag, asset_name, serial, created_by, supplier, location, is_warranty, status_label. Default: created_at.", + "disabled": false + }, + { + "key": "order", + "value": "asc", + "description": "Order of sorted results. Allowed values: asc, desc. Default: desc.", + "disabled": false + }, + { + "key": "offset", + "value": "", + "description": "Offset\/starting position of the results. Default: 0.", + "disabled": true + }, + { + "key": "limit", + "value": "50", + "description": "Limit the number of results returned. Default: 25. Maximum: 100.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/maintenances?search=repair&asset_id=1&supplier_id=1&created_by=16&url=http%3A%2F%2Fexample.com&asset_maintenance_type=repair&sort=name&order=asc&offset=&limit=50" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=HIPWn994ZVwWTllISCuyT1n0vLjhvE6GtJdyvVt5; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Maintenance", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/maintenances", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/maintenances" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "View Maintenance", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/maintenances\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/maintenances\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "2", + "description": "The ID of the maintenance." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=SMRgTfJyiKW4MwqoQkxPhRwZ7s0NG6iXfqrgvOF3; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Maintenance", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/maintenances\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/maintenances\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "2", + "description": "The ID of the maintenance." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Maintenance", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/maintenances\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/maintenances\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "2", + "description": "The ID of the maintenance." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Manufacturers", + "description": "", + "item": [ + { + "name": "Selectlist", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/manufacturers\/selectlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/manufacturers\/selectlist" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=wsdZCoP7veaDGNxSgmEVyiIXMCynDJaplPtmclKS; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Restore Deleted Manufacturer", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/manufacturers\/:id\/restore", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/manufacturers\/:id\/restore", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the manufacturer." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Manufacturers", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/manufacturers", + "query": [ + { + "key": "search", + "value": "Dell", + "description": "Search term to filter results.", + "disabled": false + }, + { + "key": "name", + "value": "Dell", + "description": "Filter by exact manufacturer name.", + "disabled": false + }, + { + "key": "url", + "value": "http%3A%2F%2Fexample.com", + "description": "Filter by exact URL.", + "disabled": false + }, + { + "key": "support_url", + "value": "http%3A%2F%2Fsupport.example.com", + "description": "Filter by exact support URL.", + "disabled": false + }, + { + "key": "warranty_lookup_url", + "value": "http%3A%2F%2Fwarranty.example.com", + "description": "Filter by exact warranty lookup URL.", + "disabled": false + }, + { + "key": "support_phone", + "value": "1-800-555-5555", + "description": "Filter by exact support phone number.", + "disabled": false + }, + { + "key": "support_email", + "value": "support%40example.org", + "description": "Filter by exact support email address.", + "disabled": false + }, + { + "key": "sort", + "value": "name", + "description": "Column to sort results by. Allowed values: id, name, url, support_url, support_email, warranty_lookup_url, support_phone, created_at, updated_at, assets_count, consumables_count, components_count, licenses_count. Default: created_at.", + "disabled": false + }, + { + "key": "order", + "value": "asc", + "description": "Order of sorted results. Allowed values: asc, desc. Default: desc.", + "disabled": false + }, + { + "key": "offset", + "value": "", + "description": "Offset\/starting position of the results. Default: 0.", + "disabled": true + }, + { + "key": "limit", + "value": "50", + "description": "Limit the number of results returned. Default: 25. Maximum: 100.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/manufacturers?search=Dell&name=Dell&url=http%3A%2F%2Fexample.com&support_url=http%3A%2F%2Fsupport.example.com&warranty_lookup_url=http%3A%2F%2Fwarranty.example.com&support_phone=1-800-555-5555&support_email=support%40example.org&sort=name&order=asc&offset=&limit=50" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=hLpuGgLKlkZ3lxAdCVVQh6AknrP7V8ucHP12iJyL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Maintenance", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/manufacturers", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/manufacturers" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Manufacturer", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/manufacturers\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/manufacturers\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the manufacturer." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=AihyA0pGOpolpeaHgVkhwxZ48ZIGlH5C4cWn2ky1; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Manufacturer", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/manufacturers\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/manufacturers\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the manufacturer." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Manufacturer", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/manufacturers\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/manufacturers\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the manufacturer." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Misc", + "description": "", + "item": [ + { + "name": "Version API routes", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/version", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/version" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=4opUPyEuZlodDlaWWG7JNFN7lCuHNMim1KxZHPur; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=719999; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + } + ] + }, + { + "name": "Models", + "description": "", + "item": [ + { + "name": "Selectlist of Models", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/models\/selectlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/models\/selectlist" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=jwtFIyYGPRatDfntlAj40jo0O4Sj0FCnKi976PR2; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Assets in Model", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/models\/assets", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/models\/assets", + "variable": [ + { + "id": "id", + "key": "id", + "value": "16", + "description": "The ID of the model." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=nvMGTR69fETV88dw8dfKSbREZAJ66IYQUUNSpf7Y; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Models", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/models", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/models" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=QArLWCify7SZSmEfdwLa8MuiE73ySbcjczNWAP5t; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Model", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/models", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/models" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Model", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/models\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/models\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "16", + "description": "The ID of the model." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=Fi7bcrWvfZzmZFbGKAT0DPwaht8G2vkcbjoJPdZ1; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Model", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/models\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/models\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "16", + "description": "The ID of the model." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Model", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/models\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/models\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "16", + "description": "The ID of the model." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Notes", + "description": "", + "item": [ + { + "name": "Assets", + "description": "", + "item": [ + { + "name": "Store Note", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/notes\/:asset_id\/store", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/notes\/:asset_id\/store", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "1", + "description": "The ID of the asset." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Checks authorization for updating assets, validates the presence of the 'note',\nattempts to find the asset by ID, and creates a new ActionLog entry if successful.\nReturns JSON responses indicating success or failure with appropriate HTTP status codes." + }, + "response": [] + }, + { + "name": "List Notes", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/notes\/:asset_id\/index", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/notes\/:asset_id\/index", + "variable": [ + { + "id": "asset_id", + "key": "asset_id", + "value": "1", + "description": "The ID of the asset." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Checks authorization to view assets, attempts to find the asset by ID,\nand fetches related action log entries of type 'note added', including\nuser information for each note. Returns a JSON response with the notes or errors." + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=0996I9pgG6hTiplyAUfm6hARQqlLp2KcZRKbrsM4; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + } + ] + } + ] + }, + { + "name": "Predefined Kits", + "description": "", + "item": [ + { + "name": "List Kits", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=BSc46Rjyl24Ed0D3XweTOOmBl4ZRMjvkZT0P0LSQ; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the kit." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=0eyOqf0SJ6Slcj3wxf7abcmSncDyqjA8t0LitABZ; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the kit." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the kit." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Licenses in Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/licenses", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/licenses", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=RDCUVBV4hMi1OpBYln5l3IZ2PNZLexaBBBMcPiY3; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Add License to Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/licenses", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/licenses", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"license\":1,\"quantity\":1}" + }, + "description": "" + }, + "response": [] + }, + { + "name": "Update License in Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/licenses\/:license_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/licenses\/:license_id", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + }, + { + "id": "license_id", + "key": "license_id", + "value": "1", + "description": "The ID of the license." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Remove License from Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/licenses\/:license_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/licenses\/:license_id", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + }, + { + "id": "license_id", + "key": "license_id", + "value": "1", + "description": "The ID of the license." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Models in Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/models", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/models", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=BdKhymmjrKjGS7HIhqlvLkChaxUPdHXJf1sntPCm; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Add Model to Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/models", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/models", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"model\":1}" + }, + "description": "" + }, + "response": [] + }, + { + "name": "List Accessories in Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/accessories", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/accessories", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=50xoUvlOlSVxg5nWSWhvNx9mDtVXWDyttn6Tdl13; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Add Accessory to Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/accessories", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/accessories", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"accessory\":1,\"quantity\":1}" + }, + "description": "" + }, + "response": [] + }, + { + "name": "Update Accessory in Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/accessories\/:accessory_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/accessories\/:accessory_id", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + }, + { + "id": "accessory_id", + "key": "accessory_id", + "value": "1", + "description": "The ID of the accessory." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"quantity\":1}" + }, + "description": "" + }, + "response": [] + }, + { + "name": "Remove Accessory from Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/accessories\/:accessory_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/accessories\/:accessory_id", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + }, + { + "id": "accessory_id", + "key": "accessory_id", + "value": "1", + "description": "The ID of the accessory." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Consumables in Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/consumables", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/consumables", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=Q2XcAI2qf8SWjOX7XDlr4BFa9PAeUgRBAaRStarB; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Add Consumable to Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/consumables", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/consumables", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"consumable\":1,\"quantity\":1}" + }, + "description": "" + }, + "response": [] + }, + { + "name": "Update Consumable in Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/consumables\/:consumable_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/consumables\/:consumable_id", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + }, + { + "id": "consumable_id", + "key": "consumable_id", + "value": "1", + "description": "The ID of the consumable." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"quantity\":1}" + }, + "description": "" + }, + "response": [] + }, + { + "name": "Remove Consumable from Kit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/kits\/:kit_id\/consumables\/:consumable_id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/kits\/:kit_id\/consumables\/:consumable_id", + "variable": [ + { + "id": "kit_id", + "key": "kit_id", + "value": "1", + "description": "The ID of the kit." + }, + { + "id": "consumable_id", + "key": "consumable_id", + "value": "1", + "description": "The ID of the consumable." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Reports", + "description": "", + "item": [ + { + "name": "Activity Report", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/reports\/activity", + "query": [ + { + "key": "search", + "value": "updated", + "description": "Search term to filter results", + "disabled": false + }, + { + "key": "target_type", + "value": "user", + "description": "Filter by target type", + "disabled": false + }, + { + "key": "target_id", + "value": "1", + "description": "Filter by target ID", + "disabled": false + }, + { + "key": "item_type", + "value": "asset", + "description": "Filter by item type", + "disabled": false + }, + { + "key": "item_id", + "value": "1", + "description": "Filter by item ID", + "disabled": false + }, + { + "key": "action_type", + "value": "create", + "description": "Filter by action type", + "disabled": false + }, + { + "key": "created_by", + "value": "1", + "description": "Filter by user ID who created the log", + "disabled": false + }, + { + "key": "action_source", + "value": "web", + "description": "Filter by action source", + "disabled": false + }, + { + "key": "remote_ip", + "value": "", + "description": "Filter by remote IP address Example:", + "disabled": true + }, + { + "key": "uploads", + "value": "1", + "description": "Filter to only show logs with file uploads", + "disabled": false + }, + { + "key": "sort", + "value": "created_at", + "description": "Column to sort by. Allowed values: id, created_at, target_id, created_by, accept_signature, action_type, note, remote_ip, user_agent, target_type, item_type, action_source, action_date. Default is created_at.", + "disabled": false + }, + { + "key": "order", + "value": "desc", + "description": "Order of sorting. Allowed values: asc, desc. Default is desc.", + "disabled": false + }, + { + "key": "offset", + "value": "", + "description": "Number of records to skip for pagination. Default is 0.", + "disabled": true + }, + { + "key": "limit", + "value": "25", + "description": "Maximum number of records to return. Default is 25.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/reports\/activity?search=updated&target_type=user&target_id=1&item_type=asset&item_id=1&action_type=create&created_by=1&action_source=web&remote_ip=&uploads=1&sort=created_at&order=desc&offset=&limit=25" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=Q7c7iu2qi9Mil7UrdGdQhd5UHhMHwIs9J7wKxvhY; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + } + ] + }, + { + "name": "Settings", + "description": "", + "item": [ + { + "name": "Test LDAP Connection", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/settings\/ldaptest", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/settings\/ldaptest" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=sXQmK1seBet712r1kd4fxKvJ8eS1G5JIQGi7Jk76; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Delete Barcode Cache", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/settings\/purge_barcodes", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/settings\/purge_barcodes" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Get a list of login attempts", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/settings\/login-attempts", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/settings\/login-attempts" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=3WvRIFmkRUjvmDyyocP7gGkeVA8nsKCstMlpD2ll; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Test LDAP Login", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/settings\/ldaptestlogin", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/settings\/ldaptestlogin" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"ldaptest_user\":\"architecto\",\"ldaptest_password\":\"architecto\"}" + }, + "description": "" + }, + "response": [] + }, + { + "name": "Test Email Configuration", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/settings\/mailtest", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/settings\/mailtest" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Lists backup files", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/settings\/backups", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/settings\/backups" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=c1LnO2y90g9cXIQdH1B3ALRTwBznlJR0MPn7UYwI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Determines and downloads the latest backup", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/settings\/backups\/download\/latest", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/settings\/backups\/download\/latest" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=h8vmsBd9n2ThBnox919dPAo17WMNdGSmFDgmUWbJ; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Downloads a backup file.", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/settings\/backups\/download\/:file", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/settings\/backups\/download\/:file", + "variable": [ + { + "id": "file", + "key": "file", + "value": "architecto", + "description": "" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "We use response()->download() here instead of Storage::download() because Storage::download()\nexhausts memory on larger files." + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=dEPJObU3yZeyRQ0ZNZQmLDg70DDH6mt8OLUoXk7b; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + } + ] + }, + { + "name": "Status Labels", + "description": "", + "item": [ + { + "name": "Assets", + "description": "", + "item": [ + { + "name": "Selectlist", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/statuslabels\/selectlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/statuslabels\/selectlist" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=wkMPeN6kxHTgcy7pBWCmBb2skYp7Ozxo03ll2QRI; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Show Count for Pie Chart", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/statuslabels\/assets\/name", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/statuslabels\/assets\/name" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=BwSbIkmBBnKEl1eHDB5irvFrSmdOermismgPqdVt; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Show Count for Pie Chart by Meta Status", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/statuslabels\/assets\/type", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/statuslabels\/assets\/type" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=qgDpluENzw06DYesVDJ62VPNypFZR7TMXA5YuERD; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Show Assets with Status Label", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/statuslabels\/:id\/assetlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/statuslabels\/:id\/assetlist", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the statuslabel." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=prHwFCnHCRfbaQBGGsb9zl9HAqpNQVahgTzOn5TU; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Check for Deployable Status", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/statuslabels\/:statuslabel\/deployable", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/statuslabels\/:statuslabel\/deployable", + "variable": [ + { + "id": "statuslabel", + "key": "statuslabel", + "value": "architecto", + "description": "The statuslabel." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Returns a boolean response based on whether the status label\nis one that is deployable or pending.\n\nThis is used by the hardware create\/edit view to determine whether\nwe should provide a dropdown of users for them to check the asset out to,\nand whether we show a warning that the asset will be checked in if it's already\nassigned but the status is changed to one that isn't pending or deployable" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=gGlaRILsVZF4fEWWem29LTEhtwQLJo5jRgFzetFi; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Show Status Labels", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/statuslabels", + "query": [ + { + "key": "search", + "value": "Inventory", + "description": "Search term to filter results.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/statuslabels?search=Inventory" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=wZlTwk63tGu1kRBFJuzb8R1UY1k0ZU2YI5NAAZt8; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Store a newly created resource in storage.", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/statuslabels", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/statuslabels" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Status Labels", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/statuslabels\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/statuslabels\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the statuslabel." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=BoPls7yDoCtaubgDPfK5nEabHin9oYkJpg9vZT3b; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Status Label", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/statuslabels\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/statuslabels\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the statuslabel." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Status Label", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/statuslabels\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/statuslabels\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the statuslabel." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + } + ] + }, + { + "name": "Suppliers", + "description": "", + "item": [ + { + "name": "Selectlist", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/suppliers\/selectlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/suppliers\/selectlist" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=XCddlMqcqKqWUTBwJenBf996h9VUAuQn9onGzMNw; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Suppliers", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/suppliers", + "query": [ + { + "key": "search", + "value": "Acme", + "description": "Search term to filter results.", + "disabled": false + }, + { + "key": "name", + "value": "Acme+Corp", + "description": "Filter by exact supplier name.", + "disabled": false + }, + { + "key": "address", + "value": "123+Main+St", + "description": "Filter by exact address.", + "disabled": false + }, + { + "key": "address2", + "value": "Suite+100", + "description": "Filter by exact address2.", + "disabled": false + }, + { + "key": "city", + "value": "Springfield", + "description": "Filter by exact city.", + "disabled": false + }, + { + "key": "state", + "value": "IL", + "description": "Filter by exact state.", + "disabled": false + }, + { + "key": "zip", + "value": "62701", + "description": "Filter by exact zip code.", + "disabled": false + }, + { + "key": "country", + "value": "USA", + "description": "Filter by exact country.", + "disabled": false + }, + { + "key": "phone", + "value": "555-1234", + "description": "Filter by exact phone number.", + "disabled": false + }, + { + "key": "fax", + "value": "555-5678", + "description": "Filter by exact fax number.", + "disabled": false + }, + { + "key": "email", + "value": "info%40example.org", + "description": "Filter by exact email address.", + "disabled": false + }, + { + "key": "url", + "value": "http%3A%2F%2Fexample.com", + "description": "Filter by exact URL.", + "disabled": false + }, + { + "key": "notes", + "value": "This+is+a+note.", + "description": "Filter by exact notes.", + "disabled": false + }, + { + "key": "sort", + "value": "name", + "description": "Column to sort results by. Allowed values: id, name, address, address2, city, state, country, zip, phone, contact, fax, email, image, assets_count, licenses_count, accessories_count, components_count, consumables_count, url, notes. Default: created_at.", + "disabled": false + }, + { + "key": "order", + "value": "asc", + "description": "Order of sorted results. Allowed values: asc, desc. Default: desc.", + "disabled": false + }, + { + "key": "offset", + "value": "", + "description": "Offset\/starting position of the results. Default: 0.", + "disabled": true + }, + { + "key": "limit", + "value": "50", + "description": "Limit the number of results returned. Default: 25. Maximum: 100.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/suppliers?search=Acme&name=Acme+Corp&address=123+Main+St&address2=Suite+100&city=Springfield&state=IL&zip=62701&country=USA&phone=555-1234&fax=555-5678&email=info%40example.org&url=http%3A%2F%2Fexample.com¬es=This+is+a+note.&sort=name&order=asc&offset=&limit=50" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=R5PUii8mbVR2t8EyWTQHM80dstDyhZxcQR15nKb7; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Supplier", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/suppliers", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/suppliers" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Supplier", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/suppliers\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/suppliers\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the supplier." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=aqFNCFcjAl7hMG1Q0RCnYmK7HTNWcq0kYhd1R9NN; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Supplier", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/suppliers\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/suppliers\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the supplier." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete Supplier", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/suppliers\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/suppliers\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the supplier." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "User Groups", + "description": "", + "item": [ + { + "name": "Display a listing of the resource.", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/groups", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/groups" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=evRZVbrjaLPlDGuAmSjuQxAfBkaXVVI3h6YJ8xCC; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create Group", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/groups", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/groups" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show Group", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/groups\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/groups\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the group." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=lUFcyrjpTiMJiziJCYaZzhxr9o4YDOHuJhtyxe9O; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update Group", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/groups\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/groups\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the group." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Remove the specified resource from storage.", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/groups\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/groups\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the group." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + }, + { + "name": "Users", + "description": "", + "item": [ + { + "name": "Selectlist", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/selectlist", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/selectlist" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=IZgqgS9tzB7Woi3wtkhrOVoQAjhOfyxkuDcPvkvg; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "LDAP Sync Users", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/ldapsync", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/ldapsync" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Reset Two-factor", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/two_factor_reset", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/two_factor_reset" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Get Current User Info", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/me", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/me" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=DdpSv89XUbxUQrWd91QsKhNPnl22poe1TgDO9OCx; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "User EULAs", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/:user_id\/eulas", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/:user_id\/eulas", + "variable": [ + { + "id": "user_id", + "key": "user_id", + "value": "2", + "description": "The ID of the user." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Gets the lst of accepted EULAs for a user," + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=jvqTGWtV1aH3OTBKuSWap25Q3CbiBnuZeONwLBEc; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Assets Assigned to User", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/:user\/assets", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/:user\/assets", + "variable": [ + { + "id": "user", + "key": "user", + "value": "2", + "description": "The user." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=BTajd65gRG0olNCl96HmZp8natMFNGjMvOZInbII; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Email Asset List to User", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/:user\/email", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/:user\/email", + "variable": [ + { + "id": "user", + "key": "user", + "value": "2", + "description": "The user." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Accessories Assigned to User", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/:user\/accessories", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/:user\/accessories", + "variable": [ + { + "id": "user", + "key": "user", + "value": "2", + "description": "The user." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=dwRnv0ptfgrlzbYQmswhgKgXRySAxB0gpanmjDq9; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "List Licenses Assigned to User", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/:user\/licenses", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/:user\/licenses", + "variable": [ + { + "id": "user", + "key": "user", + "value": "2", + "description": "The user." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=1kSYxtla0he5GDr5iKBHwxleDJnZrmZCNsr7DbNL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Restore User", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/:user\/restore", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/:user\/restore", + "variable": [ + { + "id": "user", + "key": "user", + "value": "2", + "description": "The user." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "List Users", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users", + "query": [ + { + "key": "search", + "value": "John", + "description": "Search term to filter results.", + "disabled": false + }, + { + "key": "filter", + "value": "%7B%22last_name%22%3A%22Doe%22%2C%22first_name%22%3A%22John%22%7D", + "description": "JSON object of key\/value pairs to filter results. Allowed keys: last_name, first_name, display_name, email, jobtitle, username, employee_num, groups, activated, created_at, updated_at, two_factor_enrolled, two_factor_optin, last_login, assets_count, licenses_count, consumables_count, accessories_count, manages_users_count, manages_locations_count, phone, mobile, address, city, state, country, zip, id, ldap_import, remote, vip, start_date, end_date, autoassign_licenses, website, locale, notes.", + "disabled": false + }, + { + "key": "activated", + "value": "1", + "description": "Filter by exact activation status. Allowed values: 0, 1.", + "disabled": false + }, + { + "key": "admins", + "value": "1", + "description": "Filter to only admin and superadmin users. Allowed values: true, false.", + "disabled": false + }, + { + "key": "superadmins", + "value": "1", + "description": "Filter to only superadmin users. Allowed values: true, false.", + "disabled": false + }, + { + "key": "company_id", + "value": "1", + "description": "Filter by exact company ID.", + "disabled": false + }, + { + "key": "phone", + "value": "555-1234", + "description": "Filter by exact phone number.", + "disabled": false + }, + { + "key": "mobile", + "value": "555-5678", + "description": "Filter by exact mobile number.", + "disabled": false + }, + { + "key": "location_id", + "value": "1", + "description": "Filter by exact location ID.", + "disabled": false + }, + { + "key": "created_by", + "value": "1", + "description": "Filter by exact user ID who created the user.", + "disabled": false + }, + { + "key": "email", + "value": "jdoe%40example.com", + "description": "Filter by exact email address.", + "disabled": false + }, + { + "key": "username", + "value": "jdoe", + "description": "Filter by exact username.", + "disabled": false + }, + { + "key": "first_name", + "value": "John", + "description": "Filter by exact first name.", + "disabled": false + }, + { + "key": "last_name", + "value": "Doe", + "description": "Filter by exact last name.", + "disabled": false + }, + { + "key": "display_name", + "value": "John+Doe", + "description": "Filter by exact display name.", + "disabled": false + }, + { + "key": "employee_num", + "value": "12345", + "description": "Filter by exact employee number.", + "disabled": false + }, + { + "key": "state", + "value": "CA", + "description": "Filter by exact state.", + "disabled": false + }, + { + "key": "country", + "value": "USA", + "description": "Filter by exact country.", + "disabled": false + }, + { + "key": "website", + "value": "https%3A%2F%2Fexample.com", + "description": "Filter by exact website URL.", + "disabled": false + }, + { + "key": "zip", + "value": "90210", + "description": "Filter by exact ZIP code.", + "disabled": false + }, + { + "key": "group_id", + "value": "1", + "description": "Filter by exact group ID.", + "disabled": false + }, + { + "key": "department_id", + "value": "1", + "description": "Filter by exact department ID.", + "disabled": false + }, + { + "key": "manager_id", + "value": "1", + "description": "Filter by exact manager (user) ID.", + "disabled": false + }, + { + "key": "ldap_import", + "value": "1", + "description": "Filter by exact LDAP import status. Allowed values: 0, 1.", + "disabled": false + }, + { + "key": "remote", + "value": "1", + "description": "Filter by exact remote status. Allowed values: 0, 1.", + "disabled": false + }, + { + "key": "vip", + "value": "1", + "description": "Filter by exact VIP status. Allowed values: 0, 1.", + "disabled": false + }, + { + "key": "two_factor_enrolled", + "value": "1", + "description": "Filter by exact two-factor authentication enrollment status. Allowed values: 0, 1.", + "disabled": false + } + ], + "raw": "{{baseUrl}}\/api\/v1\/users?search=John&filter=%7B%22last_name%22%3A%22Doe%22%2C%22first_name%22%3A%22John%22%7D&activated=1&admins=1&superadmins=1&company_id=1&phone=555-1234&mobile=555-5678&location_id=1&created_by=1&email=jdoe%40example.com&username=jdoe&first_name=John&last_name=Doe&display_name=John+Doe&employee_num=12345&state=CA&country=USA&website=https%3A%2F%2Fexample.com&zip=90210&group_id=1&department_id=1&manager_id=1&ldap_import=1&remote=1&vip=1&two_factor_enrolled=1" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=svMpBgCg8Lm5Jzhs2MsnXhIHryI0BbXg3iVzyJkL; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Create User", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Show User", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "2", + "description": "The ID of the user." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "max-age=0, must-revalidate, no-cache, no-store, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + }, + { + "key": "pragma", + "value": "no-cache" + }, + { + "key": "expires", + "value": "Sun, 02 Jan 1990 00:00:00 GMT" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + }, + { + "key": "feature-policy", + "value": "accelerometer 'none';autoplay 'none';camera 'none';display-capture 'none';document-domain 'none';encrypted-media 'none';fullscreen 'none';geolocation 'none';sync-xhr 'none';usb 'none';xr-spatial-tracking 'none'" + }, + { + "key": "referrer-policy", + "value": "same-origin" + }, + { + "key": "content-security-policy", + "value": "default-src 'self';style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self';object-src 'none';font-src 'self' data:;img-src 'self' data: https:\/\/snipe-it.test https:\/\/avatars.githubusercontent.com\/u\/ https:\/\/www.google.com\/images\/branding\/googlelogo\/2x\/ https:\/\/snipe-flysystem-public-test.s3-us-west-2.amazonaws.com https:\/\/secure.gravatar.com http:\/\/gravatar.com maps.google.com maps.gstatic.com *.googleapis.com" + }, + { + "key": "set-cookie", + "value": "snipe-dev_local=UXj5Ks0zKIILl7fLIxnYGCgcKClmFZ1Nx8GEnqhC; expires=Sat, 18 Oct 2025 20:42:52 GMT; Max-Age=720000; path=\/; secure; httponly; samesite=lax" + } + ], + "code": 401, + "body": "{\"error\":\"Unauthorized or unauthenticated.\"}", + "name": "" + } + ] + }, + { + "name": "Update User", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "2", + "description": "The ID of the user." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + }, + { + "name": "Delete User", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/v1\/users\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/v1\/users\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "2", + "description": "The ID of the user." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "" + }, + "response": [] + } + ] + } + ], + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "Authorization", + "type": "string" + } + ] + } +} \ No newline at end of file diff --git a/storage/scribe/openapi.yaml b/storage/scribe/openapi.yaml new file mode 100644 index 000000000000..c4254de43846 --- /dev/null +++ b/storage/scribe/openapi.yaml @@ -0,0 +1,6529 @@ +openapi: 3.0.3 +info: + title: 'Evolução local de snipe-it API Documentation' + description: 'This documentation aims to provide the information you need to work with the Snipe-IT JSON REST API.' + version: 1.0.0 +servers: + - + url: 'https://snipe-it.test/api/v1' +tags: + - + name: Accessories + description: '' + - + name: Account + description: '' + - + name: Assets + description: '' + - + name: Categories + description: '' + - + name: Companies + description: '' + - + name: Components + description: '' + - + name: Consumables + description: '' + - + name: 'Custom Fields' + description: '' + - + name: Departments + description: '' + - + name: Depreciations + description: '' + - + name: Files + description: '' + - + name: Imports + description: '' + - + name: Labels + description: '' + - + name: Licenses + description: '' + - + name: Locations + description: '' + - + name: Maintenances + description: '' + - + name: Manufacturers + description: '' + - + name: Misc + description: '' + - + name: Models + description: '' + - + name: Notes + description: '' + - + name: 'Predefined Kits' + description: '' + - + name: Reports + description: '' + - + name: Settings + description: '' + - + name: 'Status Labels' + description: '' + - + name: Suppliers + description: '' + - + name: 'User Groups' + description: '' + - + name: Users + description: '' +components: + securitySchemes: + default: + type: http + scheme: bearer + description: 'If your account has API access enabled, you can generate a token by clicking in the top right account menu and clicking API tokens.' +security: + - + default: [] +paths: + '/api/v1/accessories/{accessory}/checkedout': + get: + summary: 'Show Accessory Checkouts' + operationId: showAccessoryCheckouts + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Accessories + parameters: + - + in: path + name: accessory + description: 'The accessory.' + example: 1 + required: true + schema: + type: integer + '/api/v1/accessories/{accessory_id}/checkout': + post: + summary: 'Checkout Accessory' + operationId: checkoutAccessory + description: "If Slack is enabled and/or asset acceptance is enabled, it will also\ntrigger a Slack message and send an email." + parameters: [] + responses: { } + tags: + - Accessories + parameters: + - + in: path + name: accessory_id + description: 'The ID of the accessory.' + example: 1 + required: true + schema: + type: integer + '/api/v1/accessories/{accessory}/checkin': + post: + summary: 'Checkin Accessory' + operationId: checkinAccessory + description: '' + parameters: [] + responses: { } + tags: + - Accessories + parameters: + - + in: path + name: accessory + description: 'The accessory.' + example: 1 + required: true + schema: + type: integer + /api/v1/accessories/selectlist: + get: + summary: Selectlist + operationId: selectlist + description: '' + parameters: + - + in: query + name: search + description: 'A search term to filter results by name.' + example: null + required: false + schema: + type: string + description: 'A search term to filter results by name.' + example: null + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Accessories + /api/v1/accessories: + get: + summary: 'List accessories' + operationId: listAccessories + description: '' + parameters: + - + in: query + name: search + description: 'A search term to filter results by.' + example: keyboard + required: false + schema: + type: string + description: 'A search term to filter results by.' + example: keyboard + nullable: false + - + in: query + name: 'filter[]' + description: 'A field to filter by. Example' + example: architecto + required: false + schema: + type: string + description: 'A field to filter by. Example' + example: architecto + nullable: false + - + in: query + name: company_id + description: 'Filter by company ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by company ID.' + example: 1 + nullable: false + - + in: query + name: category_id + description: 'Filter by category ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by category ID.' + example: 1 + nullable: false + - + in: query + name: manufacturer_id + description: 'Filter by manufacturer ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by manufacturer ID.' + example: 1 + nullable: false + - + in: query + name: supplier_id + description: 'Filter by supplier ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by supplier ID.' + example: 1 + nullable: false + - + in: query + name: location_id + description: 'Filter by location ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by location ID.' + example: 1 + nullable: false + - + in: query + name: notes + description: 'Filter by notes.' + example: 'For office use only' + required: false + schema: + type: string + description: 'Filter by notes.' + example: 'For office use only' + nullable: false + - + in: query + name: offset + description: 'The number of items to skip before starting to collect the result set.' + example: 0 + required: false + schema: + type: integer + description: 'The number of items to skip before starting to collect the result set.' + example: 0 + nullable: false + - + in: query + name: limit + description: 'The number of items to return.' + example: 50 + required: false + schema: + type: integer + description: 'The number of items to return.' + example: 50 + nullable: false + - + in: query + name: sort + description: 'The field to sort by.' + example: created_at + required: false + schema: + type: string + description: 'The field to sort by.' + example: created_at + nullable: false + - + in: query + name: order + description: 'The order to sort by.' + example: desc + required: false + schema: + type: string + description: 'The order to sort by.' + example: desc + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Accessories + post: + summary: 'Create Accessory' + operationId: createAccessory + description: '' + parameters: [] + responses: { } + tags: + - Accessories + requestBody: + required: true + content: + multipart/form-data: + schema: + type: object + properties: + name: + type: string + description: 'The name of the accessory.' + example: 'Apple Bluetooth Keyboard' + nullable: false + qty: + type: integer + description: 'The number of accessories to create.' + example: 10 + nullable: false + category_id: + type: integer + description: 'The ID of the category to assign this accessory to.' + example: 1 + nullable: false + image: + type: string + format: binary + description: '' + nullable: false + required: + - name + - qty + - category_id + '/api/v1/accessories/{id}': + get: + summary: 'Show Accessory' + operationId: showAccessory + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Accessories + put: + summary: 'Update accessory.' + operationId: updateAccessory + description: '' + parameters: [] + responses: { } + tags: + - Accessories + delete: + summary: 'Delete Accessory' + operationId: deleteAccessory + description: '' + parameters: [] + responses: { } + tags: + - Accessories + parameters: + - + in: path + name: id + description: 'The ID of the accessory.' + example: 1 + required: true + schema: + type: integer + /api/v1/account/requests: + get: + summary: 'Display Requested Assets' + operationId: displayRequestedAssets + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Account + /api/v1/account/eulas: + get: + summary: 'Display Accepted EULAs' + operationId: displayAcceptedEULAs + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Account + '/api/v1/account/request/{asset_id}': + post: + summary: 'Store Asset Request' + operationId: storeAssetRequest + description: '' + parameters: [] + responses: { } + tags: + - Account + parameters: + - + in: path + name: asset_id + description: 'The ID of the asset.' + example: 1 + required: true + schema: + type: integer + '/api/v1/account/request/{asset_id}/cancel': + post: + summary: 'Cancel Asset Request' + operationId: cancelAssetRequest + description: '' + parameters: [] + responses: { } + tags: + - Account + parameters: + - + in: path + name: asset_id + description: 'The ID of the asset.' + example: 1 + required: true + schema: + type: integer + /api/v1/account/personal-access-tokens: + post: + summary: 'Create API token' + operationId: createAPIToken + description: '' + parameters: [] + responses: { } + tags: + - Account + get: + summary: 'Show API tokens' + operationId: showAPITokens + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Account + '/api/v1/account/personal-access-tokens/{tokenId}': + delete: + summary: 'Delete API token' + operationId: deleteAPIToken + description: '' + parameters: [] + responses: { } + tags: + - Account + parameters: + - + in: path + name: tokenId + description: '' + example: architecto + required: true + schema: + type: string + /api/v1/account/requestable/hardware: + get: + summary: 'Show Requestable Assets' + operationId: showRequestableAssets + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + /api/v1/reports/depreciation: + get: + summary: 'List Assets' + operationId: listAssets + description: '' + parameters: + - + in: query + name: action + description: 'The action to filter by: audits, checkins.' + example: null + required: false + schema: + type: string + description: 'The action to filter by: audits, checkins.' + example: null + nullable: false + - + in: query + name: upcoming_status + description: 'The status to filter by: `due`, `overdue`, `due-or-overdue`.' + example: null + required: false + schema: + type: string + description: 'The status to filter by: `due`, `overdue`, `due-or-overdue`.' + example: null + nullable: false + - + in: query + name: status + description: 'The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.' + example: null + required: false + schema: + type: string + description: 'The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.' + example: null + nullable: false + - + in: query + name: status_id + description: 'The asset status ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The asset status ID to filter by.' + example: null + nullable: false + - + in: query + name: asset_tag + description: 'The asset tag to filter by.' + example: null + required: false + schema: + type: string + description: 'The asset tag to filter by.' + example: null + nullable: false + - + in: query + name: serial + description: 'The serial number to filter by.' + example: null + required: false + schema: + type: string + description: 'The serial number to filter by.' + example: null + nullable: false + - + in: query + name: requestable + description: 'Filter by requestable assets.' + example: null + required: false + schema: + type: boolean + description: 'Filter by requestable assets.' + example: null + nullable: false + - + in: query + name: model_id + description: 'The model ID or IDs to filter by.' + example: null + required: false + schema: + type: integer + description: 'The model ID or IDs to filter by.' + example: null + nullable: false + - + in: query + name: category_id + description: 'The category ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The category ID to filter by.' + example: null + nullable: false + - + in: query + name: location_id + description: 'The location ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The location ID to filter by.' + example: null + nullable: false + - + in: query + name: rtd_location_id + description: 'The RTD location ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The RTD location ID to filter by.' + example: null + nullable: false + - + in: query + name: supplier_id + description: 'The supplier ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The supplier ID to filter by.' + example: null + nullable: false + - + in: query + name: asset_eol_date + description: 'date The asset end-of-life date to filter by.' + example: null + required: false + schema: + type: string + description: 'date The asset end-of-life date to filter by.' + example: null + nullable: false + - + in: query + name: assigned_to + description: 'The user ID or department ID the asset is assigned to.' + example: null + required: false + schema: + type: integer + description: 'The user ID or department ID the asset is assigned to.' + example: null + nullable: false + - + in: query + name: assigned_type + description: "The type of assignment, either 'user' or 'asset' or 'location'." + example: user + required: false + schema: + type: string + description: "The type of assignment, either 'user' or 'asset' or 'location'." + example: user + nullable: false + - + in: query + name: company_id + description: 'The company ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The company ID to filter by.' + example: null + nullable: false + - + in: query + name: manufacturer_id + description: 'The manufacturer ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The manufacturer ID to filter by.' + example: null + nullable: false + - + in: query + name: depreciation_id + description: 'The depreciation ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The depreciation ID to filter by.' + example: null + nullable: false + - + in: query + name: byod + description: 'Filter by BYOD assets.' + example: true + required: false + schema: + type: boolean + description: 'Filter by BYOD assets.' + example: true + nullable: false + - + in: query + name: order_number + description: 'The order number to filter by. Example:' + example: null + required: false + schema: + type: string + description: 'The order number to filter by. Example:' + example: null + nullable: false + - + in: query + name: search + description: 'A text string to search for. Example:' + example: null + required: false + schema: + type: string + description: 'A text string to search for. Example:' + example: null + nullable: false + - + in: query + name: filter + description: 'A JSON object of key/value pairs to filter by.' + example: null + required: false + schema: + type: string + description: 'A JSON object of key/value pairs to filter by.' + example: null + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + /api/v1/hardware/selectlist: + get: + summary: Selectlist + operationId: selectlist + description: '' + parameters: + - + in: query + name: $search + description: 'String to search on.' + example: null + required: false + schema: + type: string + description: 'String to search on.' + example: null + nullable: false + - + in: query + name: $companyId + description: 'Company ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'Company ID to filter by.' + example: null + nullable: false + - + in: query + name: $assetStatusType + description: 'The asset status type to filter by: `RTD`.' + example: null + required: false + schema: + type: string + description: 'The asset status type to filter by: `RTD`.' + example: null + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + '/api/v1/hardware/{asset_id}/licenses': + get: + summary: 'Licenses Assigned to Asset' + operationId: licensesAssignedToAsset + description: '' + parameters: + - + in: query + name: $assetId + description: 'The asset ID.' + example: 1 + required: true + schema: + type: integer + description: 'The asset ID.' + example: 1 + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + parameters: + - + in: path + name: asset_id + description: 'The ID of the asset.' + example: architecto + required: true + schema: + type: string + '/api/v1/hardware/bytag/{tag}': + get: + summary: 'Lookup by Tag' + operationId: lookupByTag + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + parameters: + - + in: path + name: tag + description: 'The asset tag.' + example: '1' + required: true + schema: + type: string + '/api/v1/hardware/bytag/{any}': + get: + summary: 'Lookup by Tag' + operationId: lookupByTag + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + parameters: + - + in: path + name: any + description: '' + example: '|{+-0p' + required: true + schema: + type: string + - + in: path + name: tag + description: 'The asset tag.' + example: '1' + required: true + schema: + type: string + '/api/v1/hardware/bytag/{any}/checkout': + post: + summary: 'Checkout by Asset Tag' + operationId: checkoutByAssetTag + description: '' + parameters: [] + responses: { } + tags: + - Assets + parameters: + - + in: path + name: any + description: '' + example: architecto + required: true + schema: + type: string + '/api/v1/hardware/bytag/{any}/checkin': + post: + summary: 'Checkin by Asset Tag' + operationId: checkinByAssetTag + description: '' + parameters: [] + responses: { } + tags: + - Assets + parameters: + - + in: path + name: any + description: '' + example: architecto + required: true + schema: + type: string + /api/v1/hardware/checkinbytag: + post: + summary: 'Checkin by Asset Tag' + operationId: checkinByAssetTag + description: '' + parameters: [] + responses: { } + tags: + - Assets + '/api/v1/hardware/byserial/{any}': + get: + summary: 'Lookup by Serial' + operationId: lookupBySerial + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + parameters: + - + in: path + name: any + description: '' + example: '|{+-0p' + required: true + schema: + type: string + - + in: path + name: serial + description: 'Optional parameter.' + required: true + schema: + type: string + examples: + omitted: + summary: 'When the value is omitted' + value: '' + present: + summary: 'When the value is present' + value: architecto + '/api/v1/hardware/{action}/{upcoming_status}': + get: + summary: 'List Assets' + operationId: listAssets + description: '' + parameters: + - + in: query + name: action + description: 'The action to filter by: audits, checkins.' + example: null + required: false + schema: + type: string + description: 'The action to filter by: audits, checkins.' + example: null + nullable: false + - + in: query + name: upcoming_status + description: 'The status to filter by: `due`, `overdue`, `due-or-overdue`.' + example: null + required: false + schema: + type: string + description: 'The status to filter by: `due`, `overdue`, `due-or-overdue`.' + example: null + nullable: false + - + in: query + name: status + description: 'The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.' + example: null + required: false + schema: + type: string + description: 'The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.' + example: null + nullable: false + - + in: query + name: status_id + description: 'The asset status ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The asset status ID to filter by.' + example: null + nullable: false + - + in: query + name: asset_tag + description: 'The asset tag to filter by.' + example: null + required: false + schema: + type: string + description: 'The asset tag to filter by.' + example: null + nullable: false + - + in: query + name: serial + description: 'The serial number to filter by.' + example: null + required: false + schema: + type: string + description: 'The serial number to filter by.' + example: null + nullable: false + - + in: query + name: requestable + description: 'Filter by requestable assets.' + example: null + required: false + schema: + type: boolean + description: 'Filter by requestable assets.' + example: null + nullable: false + - + in: query + name: model_id + description: 'The model ID or IDs to filter by.' + example: null + required: false + schema: + type: integer + description: 'The model ID or IDs to filter by.' + example: null + nullable: false + - + in: query + name: category_id + description: 'The category ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The category ID to filter by.' + example: null + nullable: false + - + in: query + name: location_id + description: 'The location ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The location ID to filter by.' + example: null + nullable: false + - + in: query + name: rtd_location_id + description: 'The RTD location ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The RTD location ID to filter by.' + example: null + nullable: false + - + in: query + name: supplier_id + description: 'The supplier ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The supplier ID to filter by.' + example: null + nullable: false + - + in: query + name: asset_eol_date + description: 'date The asset end-of-life date to filter by.' + example: null + required: false + schema: + type: string + description: 'date The asset end-of-life date to filter by.' + example: null + nullable: false + - + in: query + name: assigned_to + description: 'The user ID or department ID the asset is assigned to.' + example: null + required: false + schema: + type: integer + description: 'The user ID or department ID the asset is assigned to.' + example: null + nullable: false + - + in: query + name: assigned_type + description: "The type of assignment, either 'user' or 'asset' or 'location'." + example: user + required: false + schema: + type: string + description: "The type of assignment, either 'user' or 'asset' or 'location'." + example: user + nullable: false + - + in: query + name: company_id + description: 'The company ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The company ID to filter by.' + example: null + nullable: false + - + in: query + name: manufacturer_id + description: 'The manufacturer ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The manufacturer ID to filter by.' + example: null + nullable: false + - + in: query + name: depreciation_id + description: 'The depreciation ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The depreciation ID to filter by.' + example: null + nullable: false + - + in: query + name: byod + description: 'Filter by BYOD assets.' + example: true + required: false + schema: + type: boolean + description: 'Filter by BYOD assets.' + example: true + nullable: false + - + in: query + name: order_number + description: 'The order number to filter by. Example:' + example: null + required: false + schema: + type: string + description: 'The order number to filter by. Example:' + example: null + nullable: false + - + in: query + name: search + description: 'A text string to search for. Example:' + example: null + required: false + schema: + type: string + description: 'A text string to search for. Example:' + example: null + nullable: false + - + in: query + name: filter + description: 'A JSON object of key/value pairs to filter by.' + example: null + required: false + schema: + type: string + description: 'A JSON object of key/value pairs to filter by.' + example: null + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + parameters: + - + in: path + name: action + description: '' + example: audit|audits|checkins + required: true + schema: + type: string + - + in: path + name: upcoming_status + description: '' + example: due|overdue|due-or-overdue + required: true + schema: + type: string + /api/v1/hardware/audit: + post: + summary: 'Audit Asset' + operationId: auditAsset + description: '' + parameters: [] + responses: { } + tags: + - Assets + '/api/v1/hardware/{asset_id}/audit': + post: + summary: 'Audit Asset' + operationId: auditAsset + description: '' + parameters: [] + responses: { } + tags: + - Assets + parameters: + - + in: path + name: asset_id + description: 'The ID of the asset.' + example: 1 + required: true + schema: + type: integer + '/api/v1/hardware/{id}/checkin': + post: + summary: 'Checkin Asset' + operationId: checkinAsset + description: '' + parameters: [] + responses: { } + tags: + - Assets + parameters: + - + in: path + name: id + description: 'The ID of the hardware.' + example: architecto + required: true + schema: + type: string + '/api/v1/hardware/{id}/checkout': + post: + summary: 'Checkout Asset' + operationId: checkoutAsset + description: '' + parameters: [] + responses: { } + tags: + - Assets + parameters: + - + in: path + name: id + description: 'The ID of the hardware.' + example: architecto + required: true + schema: + type: string + '/api/v1/hardware/{asset_id}/restore': + post: + summary: 'Restore Asset' + operationId: restoreAsset + description: '' + parameters: [] + responses: { } + tags: + - Assets + parameters: + - + in: path + name: asset_id + description: 'The ID of the asset.' + example: architecto + required: true + schema: + type: string + '/api/v1/hardware/{asset_id}/assigned/assets': + get: + summary: 'List Assets Assigned to Asset' + operationId: listAssetsAssignedToAsset + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + parameters: + - + in: path + name: asset_id + description: 'The ID of the asset.' + example: 1 + required: true + schema: + type: integer + '/api/v1/hardware/{asset_id}/assigned/accessories': + get: + summary: 'List Accessories Assigned to Asset' + operationId: listAccessoriesAssignedToAsset + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + parameters: + - + in: path + name: asset_id + description: 'The ID of the asset.' + example: 1 + required: true + schema: + type: integer + '/api/v1/hardware/{asset_id}/assigned/components': + get: + summary: 'List Components Assigned to Asset' + operationId: listComponentsAssignedToAsset + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + parameters: + - + in: path + name: asset_id + description: 'The ID of the asset.' + example: 1 + required: true + schema: + type: integer + '/api/v1/hardware/{asset_id}': + patch: + summary: 'Update Asset' + operationId: updateAsset + description: '' + parameters: + - + in: query + name: model_id + description: 'The model ID to associate the asset with.' + example: 1 + required: false + schema: + type: integer + description: 'The model ID to associate the asset with.' + example: 1 + nullable: false + - + in: query + name: company_id + description: 'The company ID to associate the asset with.' + example: 1 + required: false + schema: + type: integer + description: 'The company ID to associate the asset with.' + example: 1 + nullable: false + - + in: query + name: rtd_location_id + description: 'The RTD location ID to associate the asset with.' + example: 1 + required: false + schema: + type: integer + description: 'The RTD location ID to associate the asset with.' + example: 1 + nullable: false + - + in: query + name: last_audit_date + description: 'date The last audit date for the asset.' + example: '2023-12-31' + required: false + schema: + type: string + description: 'date The last audit date for the asset.' + example: '2023-12-31' + nullable: false + - + in: query + name: image + description: 'file The image file to upload for the asset.' + example: (binary) + required: false + schema: + type: string + description: 'file The image file to upload for the asset.' + example: (binary) + nullable: false + responses: { } + tags: + - Assets + put: + summary: 'Update Asset' + operationId: updateAsset + description: '' + parameters: + - + in: query + name: model_id + description: 'The model ID to associate the asset with.' + example: 1 + required: false + schema: + type: integer + description: 'The model ID to associate the asset with.' + example: 1 + nullable: false + - + in: query + name: company_id + description: 'The company ID to associate the asset with.' + example: 1 + required: false + schema: + type: integer + description: 'The company ID to associate the asset with.' + example: 1 + nullable: false + - + in: query + name: rtd_location_id + description: 'The RTD location ID to associate the asset with.' + example: 1 + required: false + schema: + type: integer + description: 'The RTD location ID to associate the asset with.' + example: 1 + nullable: false + - + in: query + name: last_audit_date + description: 'date The last audit date for the asset.' + example: '2023-12-31' + required: false + schema: + type: string + description: 'date The last audit date for the asset.' + example: '2023-12-31' + nullable: false + - + in: query + name: image + description: 'file The image file to upload for the asset.' + example: (binary) + required: false + schema: + type: string + description: 'file The image file to upload for the asset.' + example: (binary) + nullable: false + responses: { } + tags: + - Assets + parameters: + - + in: path + name: asset_id + description: 'The ID of the asset.' + example: 1 + required: true + schema: + type: integer + /api/v1/hardware: + get: + summary: 'List Assets' + operationId: listAssets + description: '' + parameters: + - + in: query + name: action + description: 'The action to filter by: audits, checkins.' + example: null + required: false + schema: + type: string + description: 'The action to filter by: audits, checkins.' + example: null + nullable: false + - + in: query + name: upcoming_status + description: 'The status to filter by: `due`, `overdue`, `due-or-overdue`.' + example: null + required: false + schema: + type: string + description: 'The status to filter by: `due`, `overdue`, `due-or-overdue`.' + example: null + nullable: false + - + in: query + name: status + description: 'The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.' + example: null + required: false + schema: + type: string + description: 'The asset status to filter by: `RTD`, `Deployed`, `Pending`, `Undeployable`, `Archived`, `Requestable`.' + example: null + nullable: false + - + in: query + name: status_id + description: 'The asset status ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The asset status ID to filter by.' + example: null + nullable: false + - + in: query + name: asset_tag + description: 'The asset tag to filter by.' + example: null + required: false + schema: + type: string + description: 'The asset tag to filter by.' + example: null + nullable: false + - + in: query + name: serial + description: 'The serial number to filter by.' + example: null + required: false + schema: + type: string + description: 'The serial number to filter by.' + example: null + nullable: false + - + in: query + name: requestable + description: 'Filter by requestable assets.' + example: null + required: false + schema: + type: boolean + description: 'Filter by requestable assets.' + example: null + nullable: false + - + in: query + name: model_id + description: 'The model ID or IDs to filter by.' + example: null + required: false + schema: + type: integer + description: 'The model ID or IDs to filter by.' + example: null + nullable: false + - + in: query + name: category_id + description: 'The category ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The category ID to filter by.' + example: null + nullable: false + - + in: query + name: location_id + description: 'The location ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The location ID to filter by.' + example: null + nullable: false + - + in: query + name: rtd_location_id + description: 'The RTD location ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The RTD location ID to filter by.' + example: null + nullable: false + - + in: query + name: supplier_id + description: 'The supplier ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The supplier ID to filter by.' + example: null + nullable: false + - + in: query + name: asset_eol_date + description: 'date The asset end-of-life date to filter by.' + example: null + required: false + schema: + type: string + description: 'date The asset end-of-life date to filter by.' + example: null + nullable: false + - + in: query + name: assigned_to + description: 'The user ID or department ID the asset is assigned to.' + example: null + required: false + schema: + type: integer + description: 'The user ID or department ID the asset is assigned to.' + example: null + nullable: false + - + in: query + name: assigned_type + description: "The type of assignment, either 'user' or 'asset' or 'location'." + example: user + required: false + schema: + type: string + description: "The type of assignment, either 'user' or 'asset' or 'location'." + example: user + nullable: false + - + in: query + name: company_id + description: 'The company ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The company ID to filter by.' + example: null + nullable: false + - + in: query + name: manufacturer_id + description: 'The manufacturer ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The manufacturer ID to filter by.' + example: null + nullable: false + - + in: query + name: depreciation_id + description: 'The depreciation ID to filter by.' + example: null + required: false + schema: + type: integer + description: 'The depreciation ID to filter by.' + example: null + nullable: false + - + in: query + name: byod + description: 'Filter by BYOD assets.' + example: true + required: false + schema: + type: boolean + description: 'Filter by BYOD assets.' + example: true + nullable: false + - + in: query + name: order_number + description: 'The order number to filter by. Example:' + example: null + required: false + schema: + type: string + description: 'The order number to filter by. Example:' + example: null + nullable: false + - + in: query + name: search + description: 'A text string to search for. Example:' + example: null + required: false + schema: + type: string + description: 'A text string to search for. Example:' + example: null + nullable: false + - + in: query + name: filter + description: 'A JSON object of key/value pairs to filter by.' + example: null + required: false + schema: + type: string + description: 'A JSON object of key/value pairs to filter by.' + example: null + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + post: + summary: 'Create Asset' + operationId: createAsset + description: '' + parameters: [] + responses: { } + tags: + - Assets + '/api/v1/hardware/{hardware}': + get: + summary: 'Show Asset' + operationId: showAsset + description: '' + parameters: + - + in: query + name: $assetId + description: 'The asset ID.' + example: 1 + required: true + schema: + type: integer + description: 'The asset ID.' + example: 1 + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Assets + delete: + summary: 'Delete Asset' + operationId: deleteAsset + description: '' + parameters: [] + responses: { } + tags: + - Assets + parameters: + - + in: path + name: hardware + description: 'The hardware.' + example: architecto + required: true + schema: + type: string + /api/v1/hardware/labels: + post: + summary: 'Generate Label by Asset Tag' + operationId: generateLabelByAssetTag + description: '' + parameters: [] + responses: { } + tags: + - Assets + '/api/v1/categories/{item_type}/selectlist': + get: + summary: Selectlist + operationId: selectlist + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Categories + parameters: + - + in: path + name: item_type + description: '' + example: architecto + required: true + schema: + type: string + /api/v1/categories: + get: + summary: 'List Categories' + operationId: listCategories + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Categories + post: + summary: 'Create Category' + operationId: createCategory + description: '' + parameters: [] + responses: { } + tags: + - Categories + '/api/v1/categories/{id}': + get: + summary: 'Show Category' + operationId: showCategory + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Categories + put: + summary: 'Update Category' + operationId: updateCategory + description: '' + parameters: [] + responses: { } + tags: + - Categories + delete: + summary: 'Delete Category' + operationId: deleteCategory + description: '' + parameters: [] + responses: { } + tags: + - Categories + parameters: + - + in: path + name: id + description: 'The ID of the category.' + example: architecto + required: true + schema: + type: string + /api/v1/companies/selectlist: + get: + summary: Selectlist + operationId: selectlist + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Companies + /api/v1/companies: + get: + summary: 'List Companies' + operationId: listCompanies + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Companies + post: + summary: 'Create Company' + operationId: createCompany + description: '' + parameters: [] + responses: { } + tags: + - Companies + '/api/v1/companies/{id}': + get: + summary: 'Show Company' + operationId: showCompany + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Companies + put: + summary: 'Update Company' + operationId: updateCompany + description: '' + parameters: [] + responses: { } + tags: + - Companies + delete: + summary: 'Delete Company' + operationId: deleteCompany + description: '' + parameters: [] + responses: { } + tags: + - Companies + parameters: + - + in: path + name: id + description: 'The ID of the company.' + example: 1 + required: true + schema: + type: integer + '/api/v1/components/{component}/assets': + get: + summary: 'Component Assets' + operationId: componentAssets + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Components + parameters: + - + in: path + name: component + description: 'The component.' + example: 3 + required: true + schema: + type: integer + '/api/v1/components/{id}/checkin': + post: + summary: 'Checkin Component' + operationId: checkinComponent + description: '' + parameters: [] + responses: { } + tags: + - Components + parameters: + - + in: path + name: id + description: 'The ID of the component.' + example: 3 + required: true + schema: + type: integer + '/api/v1/components/{id}/checkout': + post: + summary: 'Checkout Component' + operationId: checkoutComponent + description: '' + parameters: [] + responses: { } + tags: + - Components + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + assigned_to: + type: string + description: 'The id of an existing record in the assets table.' + example: architecto + nullable: false + assigned_qty: + type: string + description: '' + example: null + nullable: false + required: + - assigned_to + parameters: + - + in: path + name: id + description: 'The ID of the component.' + example: 3 + required: true + schema: + type: integer + /api/v1/components: + get: + summary: 'List Categories' + operationId: listCategories + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Components + post: + summary: 'Create Component' + operationId: createComponent + description: '' + parameters: [] + responses: { } + tags: + - Components + '/api/v1/components/{id}': + get: + summary: 'Show Component' + operationId: showComponent + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Components + put: + summary: 'Update Component' + operationId: updateComponent + description: '' + parameters: [] + responses: { } + tags: + - Components + delete: + summary: 'Delete Component' + operationId: deleteComponent + description: '' + parameters: [] + responses: { } + tags: + - Components + parameters: + - + in: path + name: id + description: 'The ID of the component.' + example: 3 + required: true + schema: + type: integer + /api/v1/consumables/selectlist: + get: + summary: Selectlist + operationId: selectlist + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Consumables + '/api/v1/consumables/{id}/users': + get: + summary: 'User Assignments' + operationId: userAssignments + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Consumables + parameters: + - + in: path + name: id + description: 'The ID of the consumable.' + example: 1 + required: true + schema: + type: integer + '/api/v1/consumables/{consumable}/checkout': + post: + summary: 'Checkout Consumable' + operationId: checkoutConsumable + description: '' + parameters: [] + responses: { } + tags: + - Consumables + parameters: + - + in: path + name: consumable + description: 'The consumable.' + example: 1 + required: true + schema: + type: integer + /api/v1/consumables: + get: + summary: 'List Consumables' + operationId: listConsumables + description: '' + parameters: + - + in: query + name: filter + description: 'A JSON encoded array of key/value pairs to filter results by.' + example: '{"company":"1","location":"2"}' + required: false + schema: + type: string + description: 'A JSON encoded array of key/value pairs to filter results by.' + example: '{"company":"1","location":"2"}' + nullable: false + - + in: query + name: search + description: 'A search term to filter results by.' + example: architecto + required: false + schema: + type: string + description: 'A search term to filter results by.' + example: architecto + nullable: false + - + in: query + name: name + description: 'Filter by exact name.' + example: architecto + required: false + schema: + type: string + description: 'Filter by exact name.' + example: architecto + nullable: false + - + in: query + name: company_id + description: 'Filter by exact company ID.' + example: 16 + required: false + schema: + type: integer + description: 'Filter by exact company ID.' + example: 16 + nullable: false + - + in: query + name: category_id + description: 'Filter by exact category ID.' + example: 16 + required: false + schema: + type: integer + description: 'Filter by exact category ID.' + example: 16 + nullable: false + - + in: query + name: model_number + description: 'Filter by exact model number.' + example: architecto + required: false + schema: + type: string + description: 'Filter by exact model number.' + example: architecto + nullable: false + - + in: query + name: manufacturer_id + description: 'Filter by exact manufacturer ID.' + example: 16 + required: false + schema: + type: integer + description: 'Filter by exact manufacturer ID.' + example: 16 + nullable: false + - + in: query + name: supplier_id + description: 'Filter by exact supplier ID.' + example: 16 + required: false + schema: + type: integer + description: 'Filter by exact supplier ID.' + example: 16 + nullable: false + - + in: query + name: location_id + description: 'Filter by exact location ID.' + example: 16 + required: false + schema: + type: integer + description: 'Filter by exact location ID.' + example: 16 + nullable: false + - + in: query + name: notes + description: 'Filter by exact notes.' + example: architecto + required: false + schema: + type: string + description: 'Filter by exact notes.' + example: architecto + nullable: false + - + in: query + name: sort + description: 'The column to sort results by. Must be one of the following: id, name, order_number, min_amt, purchase_date, purchase_cost, company, category, model_number, item_no, manufacturer, location, qty, image, company, location, category, supplier, manufacturer. Default is created_at.' + example: architecto + required: false + schema: + type: string + description: 'The column to sort results by. Must be one of the following: id, name, order_number, min_amt, purchase_date, purchase_cost, company, category, model_number, item_no, manufacturer, location, qty, image, company, location, category, supplier, manufacturer. Default is created_at.' + example: architecto + nullable: false + - + in: query + name: order + description: 'The order to sort results by. Must be one of the following: asc, desc. Default is desc.' + example: architecto + required: false + schema: + type: string + description: 'The order to sort results by. Must be one of the following: asc, desc. Default is desc.' + example: architecto + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Consumables + post: + summary: 'Store a newly created resource in storage.' + operationId: storeANewlyCreatedResourceInStorage + description: '' + parameters: [] + responses: { } + tags: + - Consumables + '/api/v1/consumables/{id}': + get: + summary: 'Show Consumable' + operationId: showConsumable + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Consumables + put: + summary: 'Update Consumable' + operationId: updateConsumable + description: '' + parameters: [] + responses: { } + tags: + - Consumables + delete: + summary: 'Delete Consumable' + operationId: deleteConsumable + description: '' + parameters: [] + responses: { } + tags: + - Consumables + parameters: + - + in: path + name: id + description: 'The ID of the consumable.' + example: 1 + required: true + schema: + type: integer + '/api/v1/fields/fieldsets/{id}/order': + post: + summary: 'Reorder Fields' + operationId: reorderFields + description: '' + parameters: [] + responses: { } + tags: + - 'Custom Fields' + parameters: + - + in: path + name: id + description: 'The ID of the fieldset.' + example: architecto + required: true + schema: + type: string + '/api/v1/fields/{field}/associate': + post: + summary: 'Add Field to Fieldset' + operationId: addFieldToFieldset + description: '' + parameters: [] + responses: { } + tags: + - 'Custom Fields' + parameters: + - + in: path + name: field + description: 'The field.' + example: architecto + required: true + schema: + type: string + '/api/v1/fields/{field}/disassociate': + post: + summary: 'Remove Field from Fieldset' + operationId: removeFieldFromFieldset + description: '' + parameters: [] + responses: { } + tags: + - 'Custom Fields' + parameters: + - + in: path + name: field + description: 'The field.' + example: architecto + required: true + schema: + type: string + /api/v1/fields: + get: + summary: 'List Custom Fields' + operationId: listCustomFields + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Custom Fields' + post: + summary: 'Create Field' + operationId: createField + description: '' + parameters: [] + responses: { } + tags: + - 'Custom Fields' + '/api/v1/fields/{field}': + get: + summary: 'Show Field' + operationId: showField + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Custom Fields' + put: + summary: 'Update Field' + operationId: updateField + description: '' + parameters: [] + responses: { } + tags: + - 'Custom Fields' + delete: + summary: 'Delete Field' + operationId: deleteField + description: '' + parameters: [] + responses: { } + tags: + - 'Custom Fields' + parameters: + - + in: path + name: field + description: 'The field.' + example: architecto + required: true + schema: + type: string + '/api/v1/fieldsets/{fieldset}/fields': + post: + summary: 'Show Fields in Fieldset' + operationId: showFieldsInFieldset + description: '' + parameters: [] + responses: { } + tags: + - 'Custom Fields' + parameters: + - + in: path + name: fieldset + description: 'The fieldset.' + example: architecto + required: true + schema: + type: string + '/api/v1/fieldsets/{fieldset}/fields/{model}': + post: + summary: 'Fields in Fieldset with Default Values for Model' + operationId: fieldsInFieldsetWithDefaultValuesForModel + description: '' + parameters: [] + responses: { } + tags: + - 'Custom Fields' + parameters: + - + in: path + name: fieldset + description: 'The fieldset.' + example: architecto + required: true + schema: + type: string + - + in: path + name: model + description: '' + example: architecto + required: true + schema: + type: string + /api/v1/fieldsets: + get: + summary: 'List Fieldsets' + operationId: listFieldsets + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Custom Fields' + post: + summary: 'Create Fieldset' + operationId: createFieldset + description: '' + parameters: [] + responses: { } + tags: + - 'Custom Fields' + '/api/v1/fieldsets/{id}': + get: + summary: 'Show Fieldset and Fields' + operationId: showFieldsetAndFields + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Custom Fields' + put: + summary: 'Update Fieldset' + operationId: updateFieldset + description: '' + parameters: [] + responses: { } + tags: + - 'Custom Fields' + delete: + summary: 'Delete Fieldset' + operationId: deleteFieldset + description: '' + parameters: [] + responses: { } + tags: + - 'Custom Fields' + parameters: + - + in: path + name: id + description: 'The ID of the fieldset.' + example: architecto + required: true + schema: + type: string + /api/v1/departments/selectlist: + get: + summary: Selectlist + operationId: selectlist + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Departments + /api/v1/departments: + get: + summary: 'List Departments' + operationId: listDepartments + description: '' + parameters: + - + in: query + name: search + description: 'Search term to filter results.' + example: IT + required: false + schema: + type: string + description: 'Search term to filter results.' + example: IT + nullable: false + - + in: query + name: name + description: 'Filter by exact department name.' + example: IT + required: false + schema: + type: string + description: 'Filter by exact department name.' + example: IT + nullable: false + - + in: query + name: company_id + description: 'Filter by exact company ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact company ID.' + example: 1 + nullable: false + - + in: query + name: manager_id + description: 'Filter by exact manager (user) ID. Example:' + example: 16 + required: false + schema: + type: integer + description: 'Filter by exact manager (user) ID. Example:' + example: 16 + nullable: false + - + in: query + name: location_id + description: 'Filter by exact location ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact location ID.' + example: 1 + nullable: false + - + in: query + name: sort + description: 'Column to sort results by. Allowed values: id, name, image, users_count, notes, created_at, updated_at, location, manager, company. Default: created_at.' + example: name + required: false + schema: + type: string + description: 'Column to sort results by. Allowed values: id, name, image, users_count, notes, created_at, updated_at, location, manager, company. Default: created_at.' + example: name + nullable: false + - + in: query + name: order + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + example: asc + required: false + schema: + type: string + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + example: asc + nullable: false + - + in: query + name: offset + description: 'Offset/starting position of the results. Default: 0.' + example: 0 + required: false + schema: + type: integer + description: 'Offset/starting position of the results. Default: 0.' + example: 0 + nullable: false + - + in: query + name: limit + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + example: 50 + required: false + schema: + type: integer + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + example: 50 + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Departments + post: + summary: 'Create Department' + operationId: createDepartment + description: '' + parameters: [] + responses: { } + tags: + - Departments + '/api/v1/departments/{id}': + get: + summary: 'Show Department' + operationId: showDepartment + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Departments + put: + summary: 'Update Department' + operationId: updateDepartment + description: '' + parameters: [] + responses: { } + tags: + - Departments + delete: + summary: 'Delete Department' + operationId: deleteDepartment + description: '' + parameters: [] + responses: { } + tags: + - Departments + parameters: + - + in: path + name: id + description: 'The ID of the department.' + example: architecto + required: true + schema: + type: string + /api/v1/depreciations: + get: + summary: 'List Depreciations' + operationId: listDepreciations + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Depreciations + post: + summary: 'Create Depreciation' + operationId: createDepreciation + description: '' + parameters: [] + responses: { } + tags: + - Depreciations + '/api/v1/depreciations/{depreciation_id}': + get: + summary: 'Show Depreciation' + operationId: showDepreciation + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Depreciations + put: + summary: 'Update Depreciation' + operationId: updateDepreciation + description: '' + parameters: [] + responses: { } + tags: + - Depreciations + delete: + summary: 'Delete Depreciation' + operationId: deleteDepreciation + description: '' + parameters: [] + responses: { } + tags: + - Depreciations + parameters: + - + in: path + name: depreciation_id + description: 'The ID of the depreciation.' + example: architecto + required: true + schema: + type: string + '/api/v1/{object_type}/{id}/files': + get: + summary: 'List Files for an Object' + operationId: listFilesForAnObject + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Files + post: + summary: 'Upload File to an Object' + operationId: uploadFileToAnObject + description: '' + parameters: [] + responses: { } + tags: + - Files + parameters: + - + in: path + name: object_type + description: '' + example: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users + required: true + schema: + type: string + - + in: path + name: id + description: 'The ID of the {object type}.' + example: architecto + required: true + schema: + type: string + '/api/v1/{object_type}/{id}/files/{file_id}': + get: + summary: 'Display File' + operationId: displayFile + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Files + parameters: + - + in: path + name: object_type + description: '' + example: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users + required: true + schema: + type: string + - + in: path + name: id + description: 'The ID of the {object type}.' + example: architecto + required: true + schema: + type: string + - + in: path + name: file_id + description: 'The ID of the file.' + example: architecto + required: true + schema: + type: string + '/api/v1/{object_type}/{id}/files/{file_id}/delete': + delete: + summary: 'Delete File' + operationId: deleteFile + description: '' + parameters: [] + responses: { } + tags: + - Files + parameters: + - + in: path + name: object_type + description: '' + example: accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users + required: true + schema: + type: string + - + in: path + name: id + description: 'The ID of the {object type}.' + example: architecto + required: true + schema: + type: string + - + in: path + name: file_id + description: 'The ID of the file.' + example: architecto + required: true + schema: + type: string + '/api/v1/imports/process/{import}': + post: + summary: 'Process Import' + operationId: processImport + description: '' + parameters: [] + responses: { } + tags: + - Imports + parameters: + - + in: path + name: import + description: '' + example: architecto + required: true + schema: + type: string + /api/v1/imports: + get: + summary: 'List Import Files' + operationId: listImportFiles + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Imports + post: + summary: 'Save Import File' + operationId: saveImportFile + description: '' + parameters: [] + responses: { } + tags: + - Imports + '/api/v1/imports/{id}': + delete: + summary: 'Delete Import File' + operationId: deleteImportFile + description: '' + parameters: [] + responses: { } + tags: + - Imports + parameters: + - + in: path + name: id + description: 'The ID of the import.' + example: architecto + required: true + schema: + type: string + '/api/v1/labels/{name}': + get: + summary: 'Show Label' + operationId: showLabel + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Labels + parameters: + - + in: path + name: name + description: '' + example: '|{+-0p' + required: true + schema: + type: string + /api/v1/labels: + get: + summary: 'List Labels' + operationId: listLabels + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Labels + /api/v1/licenses/selectlist: + get: + summary: Selectlist + operationId: selectlist + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Licenses + /api/v1/licenses: + get: + summary: 'List Licenses' + operationId: listLicenses + description: '' + parameters: + - + in: query + name: status + description: 'Filter by license status. Options: active, inactive, expiring' + example: '?status=active' + required: false + schema: + type: string + description: 'Filter by license status. Options: active, inactive, expiring' + example: '?status=active' + nullable: false + - + in: query + name: company_id + description: 'Filter by exact company ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact company ID.' + example: 1 + nullable: false + - + in: query + name: name + description: 'Filter by exact license name.' + example: 'Microsoft 365' + required: false + schema: + type: string + description: 'Filter by exact license name.' + example: 'Microsoft 365' + nullable: false + - + in: query + name: product_key + description: 'Filter by exact product key.' + example: W269N + required: false + schema: + type: string + description: 'Filter by exact product key.' + example: W269N + nullable: false + - + in: query + name: order_number + description: 'Filter by exact order number.' + example: '12345' + required: false + schema: + type: string + description: 'Filter by exact order number.' + example: '12345' + nullable: false + - + in: query + name: purchase_order + description: 'Filter by exact purchase order.' + example: PO12345 + required: false + schema: + type: string + description: 'Filter by exact purchase order.' + example: PO12345 + nullable: false + - + in: query + name: license_name + description: 'Filter by exact licensee name.' + example: 'John Doe' + required: false + schema: + type: string + description: 'Filter by exact licensee name.' + example: 'John Doe' + nullable: false + - + in: query + name: license_email + description: 'Filter by exact licensee email.' + example: john.d + required: false + schema: + type: string + description: 'Filter by exact licensee email.' + example: john.d + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Licenses + post: + summary: 'Create License' + operationId: createLicense + description: '' + parameters: [] + responses: { } + tags: + - Licenses + '/api/v1/licenses/{license_id}': + get: + summary: 'Show License' + operationId: showLicense + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Licenses + put: + summary: 'Update License' + operationId: updateLicense + description: '' + parameters: [] + responses: { } + tags: + - Licenses + delete: + summary: 'Delete License' + operationId: deleteLicense + description: '' + parameters: [] + responses: { } + tags: + - Licenses + parameters: + - + in: path + name: license_id + description: 'The ID of the license.' + example: 1 + required: true + schema: + type: integer + '/api/v1/licenses/{license_id}/seats': + get: + summary: 'List License Seats' + operationId: listLicenseSeats + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Licenses + parameters: + - + in: path + name: license_id + description: 'The ID of the license.' + example: 1 + required: true + schema: + type: integer + '/api/v1/licenses/{license_id}/seats/{id}': + get: + summary: 'Show License Seat' + operationId: showLicenseSeat + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Licenses + put: + summary: 'Update License Seat' + operationId: updateLicenseSeat + description: '' + parameters: [] + responses: { } + tags: + - Licenses + parameters: + - + in: path + name: license_id + description: 'The ID of the license.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: id + description: 'The ID of the seat.' + example: architecto + required: true + schema: + type: string + /api/v1/locations/selectlist: + get: + summary: 'Gets a paginated collection for the select2 menus' + operationId: getsAPaginatedCollectionForTheSelect2Menus + description: "This is handled slightly differently as of ~4.7.8-pre, as\nwe have to do some recursive magic to get the hierarchy to display\nproperly when looking at the parent/child relationship in the\nrich menus.\n\nThis means we can't use the normal pagination that we use elsewhere\nin our selectlists, since we have to get the full set before we can\ndetermine which location is parent/child/grandchild, etc.\n\nThis also means that hierarchy display gets a little funky when people\nuse the Select2 search functionality, but there's not much we can do about\nthat right now.\n\nAs a result, instead of paginating as part of the query, we have to grab\nthe entire data set, and then invoke a paginator manually and pass that\nthrough to the SelectListTransformer.\n\nMany thanks to @uberbrady for the help getting this working better.\nRecursion still sucks, but I guess he doesn't have to get in the\nsea... this time." + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Locations + '/api/v1/locations/{location_id}/assets': + get: + summary: 'Show Assets with Default Location' + operationId: showAssetsWithDefaultLocation + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Locations + parameters: + - + in: path + name: location_id + description: 'The ID of the location.' + example: 1 + required: true + schema: + type: integer + '/api/v1/locations/{location_id}/assigned/assets': + get: + summary: 'Show Assets Assigned to Location' + operationId: showAssetsAssignedToLocation + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Locations + parameters: + - + in: path + name: location_id + description: 'The ID of the location.' + example: 1 + required: true + schema: + type: integer + '/api/v1/locations/{location_id}/assigned/accessories': + get: + summary: 'Show Accessories Assigned to Location' + operationId: showAccessoriesAssignedToLocation + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Locations + parameters: + - + in: path + name: location_id + description: 'The ID of the location.' + example: 1 + required: true + schema: + type: integer + /api/v1/locations: + get: + summary: 'List Locations' + operationId: listLocations + description: '' + parameters: + - + in: query + name: search + description: 'Search term to filter results.' + example: Headquarters + required: false + schema: + type: string + description: 'Search term to filter results.' + example: Headquarters + nullable: false + - + in: query + name: name + description: 'Filter by exact location name.' + example: Headquarters + required: false + schema: + type: string + description: 'Filter by exact location name.' + example: Headquarters + nullable: false + - + in: query + name: address + description: 'Filter by exact address.' + example: '123 Main St' + required: false + schema: + type: string + description: 'Filter by exact address.' + example: '123 Main St' + nullable: false + - + in: query + name: address2 + description: 'Filter by exact address2.' + example: 'Suite 100' + required: false + schema: + type: string + description: 'Filter by exact address2.' + example: 'Suite 100' + nullable: false + - + in: query + name: city + description: 'Filter by exact city.' + example: Springfield + required: false + schema: + type: string + description: 'Filter by exact city.' + example: Springfield + nullable: false + - + in: query + name: zip + description: 'Filter by exact zip code.' + example: '12345' + required: false + schema: + type: string + description: 'Filter by exact zip code.' + example: '12345' + nullable: false + - + in: query + name: country + description: 'Filter by exact country.' + example: USA + required: false + schema: + type: string + description: 'Filter by exact country.' + example: USA + nullable: false + - + in: query + name: manager_id + description: 'Filter by exact manager (user) ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact manager (user) ID.' + example: 1 + nullable: false + - + in: query + name: company_id + description: 'Filter by exact company ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact company ID.' + example: 1 + nullable: false + - + in: query + name: parent_id + description: 'Filter by exact parent location ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact parent location ID.' + example: 1 + nullable: false + - + in: query + name: status + description: 'Filter by location status. Allowed values: active, deleted.' + example: active + required: false + schema: + type: string + description: 'Filter by location status. Allowed values: active, deleted.' + example: active + nullable: false + - + in: query + name: sort + description: 'Column to sort results by. Allowed values: accessorries_count, address, address2, assets_count, assigned_assets_count, rtd_assets_count, accessories_count, assigned_accessories_count, components_count, consumables_count, users_count, children_count, city, country, created_at, currency, id, image, ldap_ou, company_id, manager_id, name, rtd_assets_count, state, updated_at, zip. Default: created_at.' + example: name + required: false + schema: + type: string + description: 'Column to sort results by. Allowed values: accessorries_count, address, address2, assets_count, assigned_assets_count, rtd_assets_count, accessories_count, assigned_accessories_count, components_count, consumables_count, users_count, children_count, city, country, created_at, currency, id, image, ldap_ou, company_id, manager_id, name, rtd_assets_count, state, updated_at, zip. Default: created_at.' + example: name + nullable: false + - + in: query + name: order + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + example: asc + required: false + schema: + type: string + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + example: asc + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Locations + post: + summary: 'Create Location' + operationId: createLocation + description: '' + parameters: [] + responses: { } + tags: + - Locations + '/api/v1/locations/{id}': + get: + summary: 'Show Location' + operationId: showLocation + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Locations + put: + summary: 'Update Location' + operationId: updateLocation + description: '' + parameters: [] + responses: { } + tags: + - Locations + delete: + summary: 'Delete Location' + operationId: deleteLocation + description: '' + parameters: [] + responses: { } + tags: + - Locations + parameters: + - + in: path + name: id + description: 'The ID of the location.' + example: 1 + required: true + schema: + type: integer + /api/v1/maintenances: + get: + summary: 'List Maintenances' + operationId: listMaintenances + description: '' + parameters: + - + in: query + name: search + description: 'Search term to filter results.' + example: repair + required: false + schema: + type: string + description: 'Search term to filter results.' + example: repair + nullable: false + - + in: query + name: asset_id + description: 'Filter by exact asset ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact asset ID.' + example: 1 + nullable: false + - + in: query + name: supplier_id + description: 'Filter by exact supplier ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact supplier ID.' + example: 1 + nullable: false + - + in: query + name: created_by + description: 'Filter by exact user ID who created the maintenance. Example' + example: 16 + required: false + schema: + type: integer + description: 'Filter by exact user ID who created the maintenance. Example' + example: 16 + nullable: false + - + in: query + name: url + description: 'Filter by exact URL.' + example: 'http://example.com' + required: false + schema: + type: string + description: 'Filter by exact URL.' + example: 'http://example.com' + nullable: false + - + in: query + name: asset_maintenance_type + description: 'Filter by exact maintenance type.' + example: repair + required: false + schema: + type: string + description: 'Filter by exact maintenance type.' + example: repair + nullable: false + - + in: query + name: sort + description: 'Column to sort results by. Allowed values: id, name, asset_maintenance_time, asset_maintenance_type, cost, start_date, completion_date, notes, asset_tag, asset_name, serial, created_by, supplier, location, is_warranty, status_label. Default: created_at.' + example: name + required: false + schema: + type: string + description: 'Column to sort results by. Allowed values: id, name, asset_maintenance_time, asset_maintenance_type, cost, start_date, completion_date, notes, asset_tag, asset_name, serial, created_by, supplier, location, is_warranty, status_label. Default: created_at.' + example: name + nullable: false + - + in: query + name: order + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + example: asc + required: false + schema: + type: string + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + example: asc + nullable: false + - + in: query + name: offset + description: 'Offset/starting position of the results. Default: 0.' + example: 0 + required: false + schema: + type: integer + description: 'Offset/starting position of the results. Default: 0.' + example: 0 + nullable: false + - + in: query + name: limit + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + example: 50 + required: false + schema: + type: integer + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + example: 50 + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Maintenances + post: + summary: 'Create Maintenance' + operationId: createMaintenance + description: '' + parameters: [] + responses: { } + tags: + - Maintenances + '/api/v1/maintenances/{id}': + get: + summary: 'View Maintenance' + operationId: viewMaintenance + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Maintenances + put: + summary: 'Update Maintenance' + operationId: updateMaintenance + description: '' + parameters: [] + responses: { } + tags: + - Maintenances + delete: + summary: 'Delete Maintenance' + operationId: deleteMaintenance + description: '' + parameters: [] + responses: { } + tags: + - Maintenances + parameters: + - + in: path + name: id + description: 'The ID of the maintenance.' + example: 2 + required: true + schema: + type: integer + /api/v1/manufacturers/selectlist: + get: + summary: Selectlist + operationId: selectlist + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Manufacturers + '/api/v1/manufacturers/{id}/restore': + post: + summary: 'Restore Deleted Manufacturer' + operationId: restoreDeletedManufacturer + description: '' + parameters: [] + responses: { } + tags: + - Manufacturers + parameters: + - + in: path + name: id + description: 'The ID of the manufacturer.' + example: architecto + required: true + schema: + type: string + /api/v1/manufacturers: + get: + summary: 'List Manufacturers' + operationId: listManufacturers + description: '' + parameters: + - + in: query + name: search + description: 'Search term to filter results.' + example: Dell + required: false + schema: + type: string + description: 'Search term to filter results.' + example: Dell + nullable: false + - + in: query + name: name + description: 'Filter by exact manufacturer name.' + example: Dell + required: false + schema: + type: string + description: 'Filter by exact manufacturer name.' + example: Dell + nullable: false + - + in: query + name: url + description: 'Filter by exact URL.' + example: 'http://example.com' + required: false + schema: + type: string + description: 'Filter by exact URL.' + example: 'http://example.com' + nullable: false + - + in: query + name: support_url + description: 'Filter by exact support URL.' + example: 'http://support.example.com' + required: false + schema: + type: string + description: 'Filter by exact support URL.' + example: 'http://support.example.com' + nullable: false + - + in: query + name: warranty_lookup_url + description: 'Filter by exact warranty lookup URL.' + example: 'http://warranty.example.com' + required: false + schema: + type: string + description: 'Filter by exact warranty lookup URL.' + example: 'http://warranty.example.com' + nullable: false + - + in: query + name: support_phone + description: 'Filter by exact support phone number.' + example: 1-800-555-5555 + required: false + schema: + type: string + description: 'Filter by exact support phone number.' + example: 1-800-555-5555 + nullable: false + - + in: query + name: support_email + description: 'Filter by exact support email address.' + example: support@example.org + required: false + schema: + type: string + description: 'Filter by exact support email address.' + example: support@example.org + nullable: false + - + in: query + name: sort + description: 'Column to sort results by. Allowed values: id, name, url, support_url, support_email, warranty_lookup_url, support_phone, created_at, updated_at, assets_count, consumables_count, components_count, licenses_count. Default: created_at.' + example: name + required: false + schema: + type: string + description: 'Column to sort results by. Allowed values: id, name, url, support_url, support_email, warranty_lookup_url, support_phone, created_at, updated_at, assets_count, consumables_count, components_count, licenses_count. Default: created_at.' + example: name + nullable: false + - + in: query + name: order + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + example: asc + required: false + schema: + type: string + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + example: asc + nullable: false + - + in: query + name: offset + description: 'Offset/starting position of the results. Default: 0.' + example: 0 + required: false + schema: + type: integer + description: 'Offset/starting position of the results. Default: 0.' + example: 0 + nullable: false + - + in: query + name: limit + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + example: 50 + required: false + schema: + type: integer + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + example: 50 + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Manufacturers + post: + summary: 'Create Maintenance' + operationId: createMaintenance + description: '' + parameters: [] + responses: { } + tags: + - Manufacturers + '/api/v1/manufacturers/{id}': + get: + summary: 'Show Manufacturer' + operationId: showManufacturer + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Manufacturers + put: + summary: 'Update Manufacturer' + operationId: updateManufacturer + description: '' + parameters: [] + responses: { } + tags: + - Manufacturers + delete: + summary: 'Delete Manufacturer' + operationId: deleteManufacturer + description: '' + parameters: [] + responses: { } + tags: + - Manufacturers + parameters: + - + in: path + name: id + description: 'The ID of the manufacturer.' + example: architecto + required: true + schema: + type: string + /api/v1/version: + get: + summary: 'Version API routes' + operationId: versionAPIRoutes + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Misc + /api/v1/models/selectlist: + get: + summary: 'Selectlist of Models' + operationId: selectlistOfModels + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Models + /api/v1/models/assets: + get: + summary: 'List Assets in Model' + operationId: listAssetsInModel + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Models + parameters: + - + in: path + name: id + description: 'The ID of the model.' + example: 16 + required: true + schema: + type: integer + /api/v1/models: + get: + summary: 'List Models' + operationId: listModels + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Models + post: + summary: 'Create Model' + operationId: createModel + description: '' + parameters: [] + responses: { } + tags: + - Models + '/api/v1/models/{id}': + get: + summary: 'Show Model' + operationId: showModel + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Models + put: + summary: 'Update Model' + operationId: updateModel + description: '' + parameters: [] + responses: { } + tags: + - Models + delete: + summary: 'Delete Model' + operationId: deleteModel + description: '' + parameters: [] + responses: { } + tags: + - Models + parameters: + - + in: path + name: id + description: 'The ID of the model.' + example: 16 + required: true + schema: + type: integer + '/api/v1/notes/{asset_id}/store': + post: + summary: 'Store Note' + operationId: storeNote + description: "Checks authorization for updating assets, validates the presence of the 'note',\nattempts to find the asset by ID, and creates a new ActionLog entry if successful.\nReturns JSON responses indicating success or failure with appropriate HTTP status codes." + parameters: [] + responses: { } + tags: + - Notes + parameters: + - + in: path + name: asset_id + description: 'The ID of the asset.' + example: 1 + required: true + schema: + type: integer + '/api/v1/notes/{asset_id}/index': + get: + summary: 'List Notes' + operationId: listNotes + description: "Checks authorization to view assets, attempts to find the asset by ID,\nand fetches related action log entries of type 'note added', including\nuser information for each note. Returns a JSON response with the notes or errors." + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Notes + parameters: + - + in: path + name: asset_id + description: 'The ID of the asset.' + example: 1 + required: true + schema: + type: integer + /api/v1/kits: + get: + summary: 'List Kits' + operationId: listKits + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Predefined Kits' + post: + summary: 'Create Kit' + operationId: createKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + '/api/v1/kits/{id}': + get: + summary: 'Show Kit' + operationId: showKit + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Predefined Kits' + put: + summary: 'Update Kit' + operationId: updateKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + delete: + summary: 'Delete Kit' + operationId: deleteKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + parameters: + - + in: path + name: id + description: 'The ID of the kit.' + example: 1 + required: true + schema: + type: integer + '/api/v1/kits/{kit_id}/licenses': + get: + summary: 'List Licenses in Kit' + operationId: listLicensesInKit + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Predefined Kits' + post: + summary: 'Add License to Kit' + operationId: addLicenseToKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + license: + type: integer + description: 'The ID of the license.' + example: 1 + nullable: false + quantity: + type: integer + description: 'The quantity of the license.' + example: 1 + nullable: false + required: + - license + parameters: + - + in: path + name: kit_id + description: 'The ID of the kit.' + example: 1 + required: true + schema: + type: integer + '/api/v1/kits/{kit_id}/licenses/{license_id}': + put: + summary: 'Update License in Kit' + operationId: updateLicenseInKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + delete: + summary: 'Remove License from Kit' + operationId: removeLicenseFromKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + parameters: + - + in: path + name: kit_id + description: 'The ID of the kit.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: license_id + description: 'The ID of the license.' + example: 1 + required: true + schema: + type: integer + '/api/v1/kits/{kit_id}/models': + get: + summary: 'List Models in Kit' + operationId: listModelsInKit + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Predefined Kits' + post: + summary: 'Add Model to Kit' + operationId: addModelToKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + model: + type: integer + description: 'The ID of the model.' + example: 1 + nullable: false + required: + - model + parameters: + - + in: path + name: kit_id + description: 'The ID of the kit.' + example: 1 + required: true + schema: + type: integer + '/api/v1/kits/{kit_id}/accessories': + get: + summary: 'List Accessories in Kit' + operationId: listAccessoriesInKit + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Predefined Kits' + post: + summary: 'Add Accessory to Kit' + operationId: addAccessoryToKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + accessory: + type: integer + description: 'The ID of the accessory.' + example: 1 + nullable: false + quantity: + type: integer + description: 'The quantity of the accessory.' + example: 1 + nullable: false + required: + - accessory + parameters: + - + in: path + name: kit_id + description: 'The ID of the kit.' + example: 1 + required: true + schema: + type: integer + '/api/v1/kits/{kit_id}/accessories/{accessory_id}': + put: + summary: 'Update Accessory in Kit' + operationId: updateAccessoryInKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + quantity: + type: integer + description: 'The quantity of the accessory.' + example: 1 + nullable: false + delete: + summary: 'Remove Accessory from Kit' + operationId: removeAccessoryFromKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + parameters: + - + in: path + name: kit_id + description: 'The ID of the kit.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: accessory_id + description: 'The ID of the accessory.' + example: 1 + required: true + schema: + type: integer + '/api/v1/kits/{kit_id}/consumables': + get: + summary: 'List Consumables in Kit' + operationId: listConsumablesInKit + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Predefined Kits' + post: + summary: 'Add Consumable to Kit' + operationId: addConsumableToKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + consumable: + type: integer + description: 'The ID of the consumable.' + example: 1 + nullable: false + quantity: + type: integer + description: 'The quantity of the consumable.' + example: 1 + nullable: false + required: + - consumable + parameters: + - + in: path + name: kit_id + description: 'The ID of the kit.' + example: 1 + required: true + schema: + type: integer + '/api/v1/kits/{kit_id}/consumables/{consumable_id}': + put: + summary: 'Update Consumable in Kit' + operationId: updateConsumableInKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + quantity: + type: integer + description: 'The quantity of the consumable.' + example: 1 + nullable: false + delete: + summary: 'Remove Consumable from Kit' + operationId: removeConsumableFromKit + description: '' + parameters: [] + responses: { } + tags: + - 'Predefined Kits' + parameters: + - + in: path + name: kit_id + description: 'The ID of the kit.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: consumable_id + description: 'The ID of the consumable.' + example: 1 + required: true + schema: + type: integer + /api/v1/reports/activity: + get: + summary: 'Activity Report' + operationId: activityReport + description: '' + parameters: + - + in: query + name: search + description: 'Search term to filter results' + example: updated + required: false + schema: + type: string + description: 'Search term to filter results' + example: updated + nullable: false + - + in: query + name: target_type + description: 'Filter by target type' + example: user + required: false + schema: + type: string + description: 'Filter by target type' + example: user + nullable: false + - + in: query + name: target_id + description: 'Filter by target ID' + example: 1 + required: false + schema: + type: integer + description: 'Filter by target ID' + example: 1 + nullable: false + - + in: query + name: item_type + description: 'Filter by item type' + example: asset + required: false + schema: + type: string + description: 'Filter by item type' + example: asset + nullable: false + - + in: query + name: item_id + description: 'Filter by item ID' + example: 1 + required: false + schema: + type: integer + description: 'Filter by item ID' + example: 1 + nullable: false + - + in: query + name: action_type + description: 'Filter by action type' + example: create + required: false + schema: + type: string + description: 'Filter by action type' + example: create + nullable: false + - + in: query + name: created_by + description: 'Filter by user ID who created the log' + example: 1 + required: false + schema: + type: integer + description: 'Filter by user ID who created the log' + example: 1 + nullable: false + - + in: query + name: action_source + description: 'Filter by action source' + example: web + required: false + schema: + type: string + description: 'Filter by action source' + example: web + nullable: false + - + in: query + name: remote_ip + description: 'Filter by remote IP address Example:' + example: null + required: false + schema: + type: string + description: 'Filter by remote IP address Example:' + example: null + nullable: false + - + in: query + name: uploads + description: 'Filter to only show logs with file uploads' + example: true + required: false + schema: + type: boolean + description: 'Filter to only show logs with file uploads' + example: true + nullable: false + - + in: query + name: sort + description: 'Column to sort by. Allowed values: id, created_at, target_id, created_by, accept_signature, action_type, note, remote_ip, user_agent, target_type, item_type, action_source, action_date. Default is created_at.' + example: created_at + required: false + schema: + type: string + description: 'Column to sort by. Allowed values: id, created_at, target_id, created_by, accept_signature, action_type, note, remote_ip, user_agent, target_type, item_type, action_source, action_date. Default is created_at.' + example: created_at + nullable: false + - + in: query + name: order + description: 'Order of sorting. Allowed values: asc, desc. Default is desc.' + example: desc + required: false + schema: + type: string + description: 'Order of sorting. Allowed values: asc, desc. Default is desc.' + example: desc + nullable: false + - + in: query + name: offset + description: 'Number of records to skip for pagination. Default is 0.' + example: 0 + required: false + schema: + type: integer + description: 'Number of records to skip for pagination. Default is 0.' + example: 0 + nullable: false + - + in: query + name: limit + description: 'Maximum number of records to return. Default is 25.' + example: 25 + required: false + schema: + type: integer + description: 'Maximum number of records to return. Default is 25.' + example: 25 + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Reports + /api/v1/settings/ldaptest: + get: + summary: 'Test LDAP Connection' + operationId: testLDAPConnection + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Settings + /api/v1/settings/purge_barcodes: + post: + summary: 'Delete Barcode Cache' + operationId: deleteBarcodeCache + description: '' + parameters: [] + responses: { } + tags: + - Settings + /api/v1/settings/login-attempts: + get: + summary: 'Get a list of login attempts' + operationId: getAListOfLoginAttempts + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Settings + /api/v1/settings/ldaptestlogin: + post: + summary: 'Test LDAP Login' + operationId: testLDAPLogin + description: '' + parameters: [] + responses: { } + tags: + - Settings + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + ldaptest_user: + type: string + description: '' + example: architecto + nullable: false + ldaptest_password: + type: string + description: '' + example: architecto + nullable: false + required: + - ldaptest_user + - ldaptest_password + /api/v1/settings/mailtest: + post: + summary: 'Test Email Configuration' + operationId: testEmailConfiguration + description: '' + parameters: [] + responses: { } + tags: + - Settings + /api/v1/settings/backups: + get: + summary: 'Lists backup files' + operationId: listsBackupFiles + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Settings + /api/v1/settings/backups/download/latest: + get: + summary: 'Determines and downloads the latest backup' + operationId: determinesAndDownloadsTheLatestBackup + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Settings + '/api/v1/settings/backups/download/{file}': + get: + summary: 'Downloads a backup file.' + operationId: downloadsABackupFile + description: "We use response()->download() here instead of Storage::download() because Storage::download()\nexhausts memory on larger files." + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Settings + parameters: + - + in: path + name: file + description: '' + example: architecto + required: true + schema: + type: string + /api/v1/statuslabels/selectlist: + get: + summary: Selectlist + operationId: selectlist + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Status Labels' + /api/v1/statuslabels/assets/name: + get: + summary: 'Show Count for Pie Chart' + operationId: showCountForPieChart + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Status Labels' + /api/v1/statuslabels/assets/type: + get: + summary: 'Show Count for Pie Chart by Meta Status' + operationId: showCountForPieChartByMetaStatus + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Status Labels' + '/api/v1/statuslabels/{id}/assetlist': + get: + summary: 'Show Assets with Status Label' + operationId: showAssetsWithStatusLabel + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Status Labels' + parameters: + - + in: path + name: id + description: 'The ID of the statuslabel.' + example: architecto + required: true + schema: + type: string + '/api/v1/statuslabels/{statuslabel}/deployable': + get: + summary: 'Check for Deployable Status' + operationId: checkForDeployableStatus + description: "Returns a boolean response based on whether the status label\nis one that is deployable or pending.\n\nThis is used by the hardware create/edit view to determine whether\nwe should provide a dropdown of users for them to check the asset out to,\nand whether we show a warning that the asset will be checked in if it's already\nassigned but the status is changed to one that isn't pending or deployable" + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Status Labels' + parameters: + - + in: path + name: statuslabel + description: 'The statuslabel.' + example: architecto + required: true + schema: + type: string + /api/v1/statuslabels: + get: + summary: 'Show Status Labels' + operationId: showStatusLabels + description: '' + parameters: + - + in: query + name: search + description: 'Search term to filter results.' + example: Inventory + required: false + schema: + type: string + description: 'Search term to filter results.' + example: Inventory + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Status Labels' + post: + summary: 'Store a newly created resource in storage.' + operationId: storeANewlyCreatedResourceInStorage + description: '' + parameters: [] + responses: { } + tags: + - 'Status Labels' + '/api/v1/statuslabels/{id}': + get: + summary: 'Show Status Labels' + operationId: showStatusLabels + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'Status Labels' + put: + summary: 'Update Status Label' + operationId: updateStatusLabel + description: '' + parameters: [] + responses: { } + tags: + - 'Status Labels' + delete: + summary: 'Delete Status Label' + operationId: deleteStatusLabel + description: '' + parameters: [] + responses: { } + tags: + - 'Status Labels' + parameters: + - + in: path + name: id + description: 'The ID of the statuslabel.' + example: architecto + required: true + schema: + type: string + /api/v1/suppliers/selectlist: + get: + summary: Selectlist + operationId: selectlist + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Suppliers + /api/v1/suppliers: + get: + summary: 'List Suppliers' + operationId: listSuppliers + description: '' + parameters: + - + in: query + name: search + description: 'Search term to filter results.' + example: Acme + required: false + schema: + type: string + description: 'Search term to filter results.' + example: Acme + nullable: false + - + in: query + name: name + description: 'Filter by exact supplier name.' + example: 'Acme Corp' + required: false + schema: + type: string + description: 'Filter by exact supplier name.' + example: 'Acme Corp' + nullable: false + - + in: query + name: address + description: 'Filter by exact address.' + example: '123 Main St' + required: false + schema: + type: string + description: 'Filter by exact address.' + example: '123 Main St' + nullable: false + - + in: query + name: address2 + description: 'Filter by exact address2.' + example: 'Suite 100' + required: false + schema: + type: string + description: 'Filter by exact address2.' + example: 'Suite 100' + nullable: false + - + in: query + name: city + description: 'Filter by exact city.' + example: Springfield + required: false + schema: + type: string + description: 'Filter by exact city.' + example: Springfield + nullable: false + - + in: query + name: state + description: 'Filter by exact state.' + example: IL + required: false + schema: + type: string + description: 'Filter by exact state.' + example: IL + nullable: false + - + in: query + name: zip + description: 'Filter by exact zip code.' + example: '62701' + required: false + schema: + type: string + description: 'Filter by exact zip code.' + example: '62701' + nullable: false + - + in: query + name: country + description: 'Filter by exact country.' + example: USA + required: false + schema: + type: string + description: 'Filter by exact country.' + example: USA + nullable: false + - + in: query + name: phone + description: 'Filter by exact phone number.' + example: 555-1234 + required: false + schema: + type: string + description: 'Filter by exact phone number.' + example: 555-1234 + nullable: false + - + in: query + name: fax + description: 'Filter by exact fax number.' + example: 555-5678 + required: false + schema: + type: string + description: 'Filter by exact fax number.' + example: 555-5678 + nullable: false + - + in: query + name: email + description: 'Filter by exact email address.' + example: info@example.org + required: false + schema: + type: string + description: 'Filter by exact email address.' + example: info@example.org + nullable: false + - + in: query + name: url + description: 'Filter by exact URL.' + example: 'http://example.com' + required: false + schema: + type: string + description: 'Filter by exact URL.' + example: 'http://example.com' + nullable: false + - + in: query + name: notes + description: 'Filter by exact notes.' + example: 'This is a note.' + required: false + schema: + type: string + description: 'Filter by exact notes.' + example: 'This is a note.' + nullable: false + - + in: query + name: sort + description: 'Column to sort results by. Allowed values: id, name, address, address2, city, state, country, zip, phone, contact, fax, email, image, assets_count, licenses_count, accessories_count, components_count, consumables_count, url, notes. Default: created_at.' + example: name + required: false + schema: + type: string + description: 'Column to sort results by. Allowed values: id, name, address, address2, city, state, country, zip, phone, contact, fax, email, image, assets_count, licenses_count, accessories_count, components_count, consumables_count, url, notes. Default: created_at.' + example: name + nullable: false + - + in: query + name: order + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + example: asc + required: false + schema: + type: string + description: 'Order of sorted results. Allowed values: asc, desc. Default: desc.' + example: asc + nullable: false + - + in: query + name: offset + description: 'Offset/starting position of the results. Default: 0.' + example: 0 + required: false + schema: + type: integer + description: 'Offset/starting position of the results. Default: 0.' + example: 0 + nullable: false + - + in: query + name: limit + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + example: 50 + required: false + schema: + type: integer + description: 'Limit the number of results returned. Default: 25. Maximum: 100.' + example: 50 + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Suppliers + post: + summary: 'Create Supplier' + operationId: createSupplier + description: '' + parameters: [] + responses: { } + tags: + - Suppliers + '/api/v1/suppliers/{id}': + get: + summary: 'Show Supplier' + operationId: showSupplier + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Suppliers + put: + summary: 'Update Supplier' + operationId: updateSupplier + description: '' + parameters: [] + responses: { } + tags: + - Suppliers + delete: + summary: 'Delete Supplier' + operationId: deleteSupplier + description: '' + parameters: [] + responses: { } + tags: + - Suppliers + parameters: + - + in: path + name: id + description: 'The ID of the supplier.' + example: architecto + required: true + schema: + type: string + /api/v1/groups: + get: + summary: 'Display a listing of the resource.' + operationId: displayAListingOfTheResource + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'User Groups' + post: + summary: 'Create Group' + operationId: createGroup + description: '' + parameters: [] + responses: { } + tags: + - 'User Groups' + '/api/v1/groups/{id}': + get: + summary: 'Show Group' + operationId: showGroup + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - 'User Groups' + put: + summary: 'Update Group' + operationId: updateGroup + description: '' + parameters: [] + responses: { } + tags: + - 'User Groups' + delete: + summary: 'Remove the specified resource from storage.' + operationId: removeTheSpecifiedResourceFromStorage + description: '' + parameters: [] + responses: { } + tags: + - 'User Groups' + parameters: + - + in: path + name: id + description: 'The ID of the group.' + example: architecto + required: true + schema: + type: string + /api/v1/users/selectlist: + get: + summary: Selectlist + operationId: selectlist + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Users + /api/v1/users/ldapsync: + post: + summary: 'LDAP Sync Users' + operationId: lDAPSyncUsers + description: '' + parameters: [] + responses: { } + tags: + - Users + /api/v1/users/two_factor_reset: + post: + summary: 'Reset Two-factor' + operationId: resetTwoFactor + description: '' + parameters: [] + responses: { } + tags: + - Users + /api/v1/users/me: + get: + summary: 'Get Current User Info' + operationId: getCurrentUserInfo + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Users + '/api/v1/users/{user_id}/eulas': + get: + summary: 'User EULAs' + operationId: userEULAs + description: 'Gets the lst of accepted EULAs for a user,' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Users + parameters: + - + in: path + name: user_id + description: 'The ID of the user.' + example: 2 + required: true + schema: + type: integer + '/api/v1/users/{user}/assets': + get: + summary: 'List Assets Assigned to User' + operationId: listAssetsAssignedToUser + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Users + parameters: + - + in: path + name: user + description: 'The user.' + example: 2 + required: true + schema: + type: integer + '/api/v1/users/{user}/email': + post: + summary: 'Email Asset List to User' + operationId: emailAssetListToUser + description: '' + parameters: [] + responses: { } + tags: + - Users + parameters: + - + in: path + name: user + description: 'The user.' + example: 2 + required: true + schema: + type: integer + '/api/v1/users/{user}/accessories': + get: + summary: 'List Accessories Assigned to User' + operationId: listAccessoriesAssignedToUser + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Users + parameters: + - + in: path + name: user + description: 'The user.' + example: 2 + required: true + schema: + type: integer + '/api/v1/users/{user}/licenses': + get: + summary: 'List Licenses Assigned to User' + operationId: listLicensesAssignedToUser + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Users + parameters: + - + in: path + name: user + description: 'The user.' + example: 2 + required: true + schema: + type: integer + '/api/v1/users/{user}/restore': + post: + summary: 'Restore User' + operationId: restoreUser + description: '' + parameters: [] + responses: { } + tags: + - Users + parameters: + - + in: path + name: user + description: 'The user.' + example: 2 + required: true + schema: + type: integer + /api/v1/users: + get: + summary: 'List Users' + operationId: listUsers + description: '' + parameters: + - + in: query + name: search + description: 'Search term to filter results.' + example: John + required: false + schema: + type: string + description: 'Search term to filter results.' + example: John + nullable: false + - + in: query + name: filter + description: 'JSON object of key/value pairs to filter results. Allowed keys: last_name, first_name, display_name, email, jobtitle, username, employee_num, groups, activated, created_at, updated_at, two_factor_enrolled, two_factor_optin, last_login, assets_count, licenses_count, consumables_count, accessories_count, manages_users_count, manages_locations_count, phone, mobile, address, city, state, country, zip, id, ldap_import, remote, vip, start_date, end_date, autoassign_licenses, website, locale, notes.' + example: '{"last_name":"Doe","first_name":"John"}' + required: false + schema: + type: string + description: 'JSON object of key/value pairs to filter results. Allowed keys: last_name, first_name, display_name, email, jobtitle, username, employee_num, groups, activated, created_at, updated_at, two_factor_enrolled, two_factor_optin, last_login, assets_count, licenses_count, consumables_count, accessories_count, manages_users_count, manages_locations_count, phone, mobile, address, city, state, country, zip, id, ldap_import, remote, vip, start_date, end_date, autoassign_licenses, website, locale, notes.' + example: '{"last_name":"Doe","first_name":"John"}' + nullable: false + - + in: query + name: activated + description: 'Filter by exact activation status. Allowed values: 0, 1.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact activation status. Allowed values: 0, 1.' + example: 1 + nullable: false + - + in: query + name: admins + description: 'Filter to only admin and superadmin users. Allowed values: true, false.' + example: true + required: false + schema: + type: boolean + description: 'Filter to only admin and superadmin users. Allowed values: true, false.' + example: true + nullable: false + - + in: query + name: superadmins + description: 'Filter to only superadmin users. Allowed values: true, false.' + example: true + required: false + schema: + type: boolean + description: 'Filter to only superadmin users. Allowed values: true, false.' + example: true + nullable: false + - + in: query + name: company_id + description: 'Filter by exact company ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact company ID.' + example: 1 + nullable: false + - + in: query + name: phone + description: 'Filter by exact phone number.' + example: 555-1234 + required: false + schema: + type: string + description: 'Filter by exact phone number.' + example: 555-1234 + nullable: false + - + in: query + name: mobile + description: 'Filter by exact mobile number.' + example: 555-5678 + required: false + schema: + type: string + description: 'Filter by exact mobile number.' + example: 555-5678 + nullable: false + - + in: query + name: location_id + description: 'Filter by exact location ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact location ID.' + example: 1 + nullable: false + - + in: query + name: created_by + description: 'Filter by exact user ID who created the user.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact user ID who created the user.' + example: 1 + nullable: false + - + in: query + name: email + description: 'Filter by exact email address.' + example: jdoe@example.com + required: false + schema: + type: string + description: 'Filter by exact email address.' + example: jdoe@example.com + nullable: false + - + in: query + name: username + description: 'Filter by exact username.' + example: jdoe + required: false + schema: + type: string + description: 'Filter by exact username.' + example: jdoe + nullable: false + - + in: query + name: first_name + description: 'Filter by exact first name.' + example: John + required: false + schema: + type: string + description: 'Filter by exact first name.' + example: John + nullable: false + - + in: query + name: last_name + description: 'Filter by exact last name.' + example: Doe + required: false + schema: + type: string + description: 'Filter by exact last name.' + example: Doe + nullable: false + - + in: query + name: display_name + description: 'Filter by exact display name.' + example: 'John Doe' + required: false + schema: + type: string + description: 'Filter by exact display name.' + example: 'John Doe' + nullable: false + - + in: query + name: employee_num + description: 'Filter by exact employee number.' + example: '12345' + required: false + schema: + type: string + description: 'Filter by exact employee number.' + example: '12345' + nullable: false + - + in: query + name: state + description: 'Filter by exact state.' + example: CA + required: false + schema: + type: string + description: 'Filter by exact state.' + example: CA + nullable: false + - + in: query + name: country + description: 'Filter by exact country.' + example: USA + required: false + schema: + type: string + description: 'Filter by exact country.' + example: USA + nullable: false + - + in: query + name: website + description: 'Filter by exact website URL.' + example: 'https://example.com' + required: false + schema: + type: string + description: 'Filter by exact website URL.' + example: 'https://example.com' + nullable: false + - + in: query + name: zip + description: 'Filter by exact ZIP code.' + example: '90210' + required: false + schema: + type: string + description: 'Filter by exact ZIP code.' + example: '90210' + nullable: false + - + in: query + name: group_id + description: 'Filter by exact group ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact group ID.' + example: 1 + nullable: false + - + in: query + name: department_id + description: 'Filter by exact department ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact department ID.' + example: 1 + nullable: false + - + in: query + name: manager_id + description: 'Filter by exact manager (user) ID.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact manager (user) ID.' + example: 1 + nullable: false + - + in: query + name: ldap_import + description: 'Filter by exact LDAP import status. Allowed values: 0, 1.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact LDAP import status. Allowed values: 0, 1.' + example: 1 + nullable: false + - + in: query + name: remote + description: 'Filter by exact remote status. Allowed values: 0, 1.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact remote status. Allowed values: 0, 1.' + example: 1 + nullable: false + - + in: query + name: vip + description: 'Filter by exact VIP status. Allowed values: 0, 1.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact VIP status. Allowed values: 0, 1.' + example: 1 + nullable: false + - + in: query + name: two_factor_enrolled + description: 'Filter by exact two-factor authentication enrollment status. Allowed values: 0, 1.' + example: 1 + required: false + schema: + type: integer + description: 'Filter by exact two-factor authentication enrollment status. Allowed values: 0, 1.' + example: 1 + nullable: false + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Users + post: + summary: 'Create User' + operationId: createUser + description: '' + parameters: [] + responses: { } + tags: + - Users + '/api/v1/users/{id}': + get: + summary: 'Show User' + operationId: showUser + description: '' + parameters: [] + responses: + 401: + description: '' + content: + application/json: + schema: + type: object + example: + error: 'Unauthorized or unauthenticated.' + properties: + error: + type: string + example: 'Unauthorized or unauthenticated.' + tags: + - Users + put: + summary: 'Update User' + operationId: updateUser + description: '' + parameters: [] + responses: { } + tags: + - Users + delete: + summary: 'Delete User' + operationId: deleteUser + description: '' + parameters: [] + responses: { } + tags: + - Users + parameters: + - + in: path + name: id + description: 'The ID of the user.' + example: 2 + required: true + schema: + type: integer