# Materials

## Get material measurement units

> The API gives the ability to get all material measurement units.

```json
{"openapi":"3.0.0","info":{"title":"Public API","version":"1.0"},"security":[{"PublicApiKey":[]}],"components":{"securitySchemes":{"PublicApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"PublicMeasurementUnitDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the measurement unit"},"name":{"type":"string","description":"Measurement unit name"}},"required":["id","name"]}}},"paths":{"/api/v1/public/materials/measurement_units":{"get":{"description":"The API gives the ability to get all material measurement units.","operationId":"PublicMaterialController_getMaterialMeasurementUnits_v1","parameters":[{"name":"x-tenant-id","in":"header","description":"Tenant id (uuid v4)","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PublicMeasurementUnitDto"}}}}},"429":{"description":"Returned when the rate limit is exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum number of allowed requests during the current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining number of requests before throttling occurs","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Number of seconds until the rate limit window resets","schema":{"type":"integer"}}}}},"summary":"Get material measurement units","tags":["Materials"]}}}}
```

## Create material

> \
> The API gives the ability to create a new material and specify material properties.\
> \
> \## Scenarios for processing the received data\
> \
> \### 📝 All required + optional parameters were passed\
> \
> The system creates material in the system.\
> \
> \### UI\
> \
> \- Newly created material is added to the Materials page to the \*\*{Category} tab and {Subcategory} section\*\*, which were passed in the “CREATE a material” request.\
> &#x20;   \- If \`category\_name\` wasn't specified in the request, then material is added to the “Without category” tab on the Materials page.\
> &#x20;   \- If \`subcategory\_name\` wasn't specified in the request, then material is added to the \*\*{Category} tab\*\* which was passed in the “CREATE a material” request, but added to the “Without subcategory” section on the Materials page.

```json
{"openapi":"3.0.0","info":{"title":"Public API","version":"1.0"},"security":[{"PublicApiKey":[]}],"components":{"securitySchemes":{"PublicApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"PublicMaterialCreateDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the material"},"measurement_unit_id":{"type":"string","format":"uuid","description":"UUID of the measurement unit for this material"},"material_external_id":{"type":"string","description":"External identifier for the material from supplier or other system"},"description":{"type":"string","description":"Detailed description of the material"},"material_category_id":{"type":"string","format":"uuid","description":"UUID of the material category"},"material_subcategory_id":{"type":"string","format":"uuid","description":"UUID of the material subcategory"},"material_supplier_id":{"type":"string","format":"uuid","description":"UUID of the material supplier"},"delivery_time":{"description":"Delivery time information for the material","allOf":[{"$ref":"#/components/schemas/PublicMaterialCreateDeliveryTimeDto"}]},"purchase_price":{"type":"number","minimum":1,"description":"Purchase price of the material in base currency"},"actual_price":{"type":"number","minimum":1,"description":"Current actual price of the material in base currency"},"status":{"type":"string","description":"Status of the material (Default status if no value provided: ACTIVE)","enum":["ACTIVE","INACTIVE"]},"materialCharacteristics":{"maxItems":10,"description":"Array of material characteristic UUIDs (max 10)","type":"array","items":{"type":"string","format":"uuid"}},"tags":{"description":"Array of tag UUIDs for categorization and filtering","type":"array","items":{"type":"string","format":"uuid"}}},"required":["name","measurement_unit_id"]},"PublicMaterialCreateDeliveryTimeDto":{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string"}},"required":["value","unit"]},"PublicMaterialResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the material"},"material_category_id":{"type":"object","nullable":true,"description":"ID of the material category"},"material_subcategory_id":{"type":"object","nullable":true,"description":"ID of the material subcategory"},"material_supplier_id":{"type":"object","nullable":true,"description":"ID of the material supplier"},"image_id":{"type":"object","nullable":true,"description":"ID of the associated image"},"material_external_id":{"type":"object","nullable":true,"description":"External identifier for the material"},"measurement_unit_id":{"type":"string","format":"uuid","description":"ID of the measurement unit"},"name":{"type":"string","description":"Name of the material"},"description":{"type":"object","nullable":true,"description":"Description of the material"},"status":{"type":"string","description":"Current status of the material","enum":["ACTIVE","INACTIVE"]},"purchase_price":{"type":"object","nullable":true,"description":"Purchase price of the material"},"actual_price":{"type":"object","nullable":true,"description":"Actual price of the material"},"supply_delivery_time":{"type":"object","nullable":true,"description":"Supply delivery time value"},"supply_delivery_time_period":{"type":"object","nullable":true,"description":"Supply delivery time period unit"},"created_at":{"format":"date-time","type":"string","description":"Date when the material was created"},"updated_at":{"type":"object","nullable":true,"description":"Date when the material was last updated"},"created_by":{"type":"object","nullable":true,"description":"ID of the user who created the material"},"updated_by":{"type":"object","nullable":true,"description":"ID of the user who last updated the material"}},"required":["id","material_category_id","material_subcategory_id","material_supplier_id","image_id","material_external_id","measurement_unit_id","name","description","status","purchase_price","actual_price","supply_delivery_time","supply_delivery_time_period","created_at","updated_at","created_by","updated_by"]}}},"paths":{"/api/v1/public/materials":{"post":{"description":"\nThe API gives the ability to create a new material and specify material properties.\n\n## Scenarios for processing the received data\n\n### 📝 All required + optional parameters were passed\n\nThe system creates material in the system.\n\n### UI\n\n- Newly created material is added to the Materials page to the **{Category} tab and {Subcategory} section**, which were passed in the “CREATE a material” request.\n    - If `category_name` wasn't specified in the request, then material is added to the “Without category” tab on the Materials page.\n    - If `subcategory_name` wasn't specified in the request, then material is added to the **{Category} tab** which was passed in the “CREATE a material” request, but added to the “Without subcategory” section on the Materials page.","operationId":"PublicMaterialController_create_v1","parameters":[{"name":"x-tenant-id","in":"header","description":"Tenant id (uuid v4)","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicMaterialCreateDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicMaterialResponseDto"}}}},"429":{"description":"Returned when the rate limit is exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum number of allowed requests during the current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining number of requests before throttling occurs","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Number of seconds until the rate limit window resets","schema":{"type":"integer"}}}}},"summary":"Create material","tags":["Materials"]}}}}
```

## Add photo to material

> \
> The API gives the ability to add photo to material.\
> \
> \## Scenarios for processing the received data\
> \
> \### 📝 Photo was passed successfully\
> \
> System sets this photo as a main photo for a material.<br>

```json
{"openapi":"3.0.0","info":{"title":"Public API","version":"1.0"},"security":[{"PublicApiKey":[]}],"components":{"securitySchemes":{"PublicApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"PublicAddPhotoToMaterialDto":{"type":"object","properties":{"url":{"type":"string","description":"Photo url"}},"required":["url"]},"MessageDto":{"type":"object","properties":{"message":{"type":"string","description":"Message returned from API confirming the operation"}},"required":["message"]}}},"paths":{"/api/v1/public/materials/{material_id}/photos":{"post":{"description":"\nThe API gives the ability to add photo to material.\n\n## Scenarios for processing the received data\n\n### 📝 Photo was passed successfully\n\nSystem sets this photo as a main photo for a material.\n","operationId":"PublicMaterialController_addPhoto_v1","parameters":[{"name":"material_id","required":true,"in":"path","description":"Material ID","schema":{"type":"string"}},{"name":"x-tenant-id","in":"header","description":"Tenant id (uuid v4)","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAddPhotoToMaterialDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageDto"}}}},"429":{"description":"Returned when the rate limit is exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum number of allowed requests during the current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining number of requests before throttling occurs","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Number of seconds until the rate limit window resets","schema":{"type":"integer"}}}}},"summary":"Add photo to material","tags":["Materials"]}}}}
```

## Update material

> The API gives the ability to update materials properties. Any parameters not provided will be left unchanged.

```json
{"openapi":"3.0.0","info":{"title":"Public API","version":"1.0"},"security":[{"PublicApiKey":[]}],"components":{"securitySchemes":{"PublicApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"PublicMaterialUpdateDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the material"},"measurement_unit_id":{"type":"string","format":"uuid","description":"UUID of the measurement unit for this material"},"material_external_id":{"type":"string","description":"External identifier for the material from supplier or other system"},"description":{"type":"string","description":"Detailed description of the material"},"material_category_id":{"type":"string","format":"uuid","description":"UUID of the material category"},"material_subcategory_id":{"type":"string","format":"uuid","description":"UUID of the material subcategory"},"material_supplier_id":{"type":"string","format":"uuid","description":"UUID of the material supplier"},"delivery_time":{"description":"Delivery time information for the material","allOf":[{"$ref":"#/components/schemas/PublicMaterialUpdateDeliveryTimeDto"}]},"purchase_price":{"type":"number","minimum":1,"description":"Purchase price of the material in base currency"},"actual_price":{"type":"number","minimum":1,"description":"Current actual price of the material in base currency"},"status":{"type":"string","description":"Status of the material","enum":["ACTIVE","INACTIVE"]}}},"PublicMaterialUpdateDeliveryTimeDto":{"type":"object","properties":{"value":{"type":"number"},"unit":{"type":"string"}},"required":["value","unit"]},"MessageDto":{"type":"object","properties":{"message":{"type":"string","description":"Message returned from API confirming the operation"}},"required":["message"]}}},"paths":{"/api/v1/public/materials/{material_id}":{"patch":{"description":"The API gives the ability to update materials properties. Any parameters not provided will be left unchanged.","operationId":"PublicMaterialController_update_v1","parameters":[{"name":"material_id","required":true,"in":"path","description":"Material ID","schema":{"type":"string"}},{"name":"x-tenant-id","in":"header","description":"Tenant id (uuid v4)","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicMaterialUpdateDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageDto"}}}},"429":{"description":"Returned when the rate limit is exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum number of allowed requests during the current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining number of requests before throttling occurs","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Number of seconds until the rate limit window resets","schema":{"type":"integer"}}}}},"summary":"Update material","tags":["Materials"]}}}}
```

## Add parameters to a material

> The API gives the ability to add parameter to material.

```json
{"openapi":"3.0.0","info":{"title":"Public API","version":"1.0"},"security":[{"PublicApiKey":[]}],"components":{"securitySchemes":{"PublicApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"PublicMaterialAddParametersDto":{"type":"object","properties":{"data":{"description":"Array of material parameters to add, each containing parameter_id and parameter_value_id","type":"array","items":{"$ref":"#/components/schemas/PublicMaterialAddParametersDataDto"}}},"required":["data"]},"PublicMaterialAddParametersDataDto":{"type":"object","properties":{"parameter_id":{"type":"string","format":"uuid","description":"Unique identifier of the parameter"},"parameter_value_id":{"type":"string","format":"uuid","description":"Unique identifier of the parameter value"}},"required":["parameter_id","parameter_value_id"]},"MessageDto":{"type":"object","properties":{"message":{"type":"string","description":"Message returned from API confirming the operation"}},"required":["message"]}}},"paths":{"/api/v1/public/materials/{material_id}/parameters":{"post":{"description":"The API gives the ability to add parameter to material.","operationId":"PublicMaterialController_addMaterialParameter_v1","parameters":[{"name":"material_id","required":true,"in":"path","description":"Material ID","schema":{"type":"string"}},{"name":"x-tenant-id","in":"header","description":"Tenant id (uuid v4)","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicMaterialAddParametersDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageDto"}}}},"429":{"description":"Returned when the rate limit is exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum number of allowed requests during the current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining number of requests before throttling occurs","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Number of seconds until the rate limit window resets","schema":{"type":"integer"}}}}},"summary":"Add parameters to a material","tags":["Materials"]}}}}
```

## Remove material parameter from material

> The API gives the ability to remove parameter from material.

```json
{"openapi":"3.0.0","info":{"title":"Public API","version":"1.0"},"security":[{"PublicApiKey":[]}],"components":{"securitySchemes":{"PublicApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"MessageDto":{"type":"object","properties":{"message":{"type":"string","description":"Message returned from API confirming the operation"}},"required":["message"]}}},"paths":{"/api/v1/public/materials/{material_id}/parameters/{parameter_id}":{"delete":{"description":"The API gives the ability to remove parameter from material.","operationId":"PublicMaterialController_removeMaterialParameter_v1","parameters":[{"name":"material_id","required":true,"in":"path","description":"Material ID","schema":{"type":"string"}},{"name":"parameter_id","required":true,"in":"path","description":"Parameter ID","schema":{"format":"UUID","type":"string"}},{"name":"x-tenant-id","in":"header","description":"Tenant id (uuid v4)","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageDto"}}}},"429":{"description":"Returned when the rate limit is exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum number of allowed requests during the current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining number of requests before throttling occurs","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Number of seconds until the rate limit window resets","schema":{"type":"integer"}}}}},"summary":"Remove material parameter from material","tags":["Materials"]}}}}
```

## Update material parameter value for material

> The API gives the ability to update material parameter value.

```json
{"openapi":"3.0.0","info":{"title":"Public API","version":"1.0"},"security":[{"PublicApiKey":[]}],"components":{"securitySchemes":{"PublicApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"PublicMaterialUpdateParameterValueDto":{"type":"object","properties":{"parameter_value_id":{"type":"string","format":"uuid","description":"Unique identifier of the parameter value to update"}},"required":["parameter_value_id"]},"MessageDto":{"type":"object","properties":{"message":{"type":"string","description":"Message returned from API confirming the operation"}},"required":["message"]}}},"paths":{"/api/v1/public/materials/{material_id}/parameters/{parameter_id}":{"patch":{"description":"The API gives the ability to update material parameter value.","operationId":"PublicMaterialController_updateParameterValue_v1","parameters":[{"name":"material_id","required":true,"in":"path","description":"Material ID","schema":{"type":"string"}},{"name":"parameter_id","required":true,"in":"path","description":"Parameter ID","schema":{"format":"UUID","type":"string"}},{"name":"x-tenant-id","in":"header","description":"Tenant id (uuid v4)","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicMaterialUpdateParameterValueDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageDto"}}}},"429":{"description":"Returned when the rate limit is exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum number of allowed requests during the current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining number of requests before throttling occurs","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Number of seconds until the rate limit window resets","schema":{"type":"integer"}}}}},"summary":"Update material parameter value for material","tags":["Materials"]}}}}
```

## Remove all material parameters from material

> The API gives the ability to remove all parameters from material.

```json
{"openapi":"3.0.0","info":{"title":"Public API","version":"1.0"},"security":[{"PublicApiKey":[]}],"components":{"securitySchemes":{"PublicApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"MessageDto":{"type":"object","properties":{"message":{"type":"string","description":"Message returned from API confirming the operation"}},"required":["message"]}}},"paths":{"/api/v1/public/materials/{material_id}/parameters-all":{"delete":{"description":"The API gives the ability to remove all parameters from material.","operationId":"PublicMaterialController_removeAllMaterialParameters_v1","parameters":[{"name":"material_id","required":true,"in":"path","description":"Material ID","schema":{"type":"string"}},{"name":"x-tenant-id","in":"header","description":"Tenant id (uuid v4)","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageDto"}}}},"429":{"description":"Returned when the rate limit is exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum number of allowed requests during the current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining number of requests before throttling occurs","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Number of seconds until the rate limit window resets","schema":{"type":"integer"}}}}},"summary":"Remove all material parameters from material","tags":["Materials"]}}}}
```

## Add tag to a material

> The API gives the ability to add tag to material.

```json
{"openapi":"3.0.0","info":{"title":"Public API","version":"1.0"},"security":[{"PublicApiKey":[]}],"components":{"securitySchemes":{"PublicApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"PublicMaterialAddTagsDto":{"type":"object","properties":{"tag_ids":{"description":"Array of tag UUIDs for categorization and filtering","type":"array","items":{"type":"string","format":"uuid"}}},"required":["tag_ids"]},"MessageDto":{"type":"object","properties":{"message":{"type":"string","description":"Message returned from API confirming the operation"}},"required":["message"]}}},"paths":{"/api/v1/public/materials/{material_id}/tags":{"post":{"description":"The API gives the ability to add tag to material.","operationId":"PublicMaterialController_addMaterialTag_v1","parameters":[{"name":"material_id","required":true,"in":"path","description":"Material ID","schema":{"type":"string"}},{"name":"x-tenant-id","in":"header","description":"Tenant id (uuid v4)","required":false,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicMaterialAddTagsDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageDto"}}}},"429":{"description":"Returned when the rate limit is exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum number of allowed requests during the current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining number of requests before throttling occurs","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Number of seconds until the rate limit window resets","schema":{"type":"integer"}}}}},"summary":"Add tag to a material","tags":["Materials"]}}}}
```

## Remove tag from a material

> The API gives the ability to remove tag from material.

```json
{"openapi":"3.0.0","info":{"title":"Public API","version":"1.0"},"security":[{"PublicApiKey":[]}],"components":{"securitySchemes":{"PublicApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"MessageDto":{"type":"object","properties":{"message":{"type":"string","description":"Message returned from API confirming the operation"}},"required":["message"]}}},"paths":{"/api/v1/public/materials/{material_id}/tags/{tag_id}":{"delete":{"description":"The API gives the ability to remove tag from material.","operationId":"PublicMaterialController_removeMaterialTag_v1","parameters":[{"name":"material_id","required":true,"in":"path","description":"Material ID","schema":{"type":"string"}},{"name":"tag_id","required":true,"in":"path","description":"Tag ID","schema":{"type":"string"}},{"name":"x-tenant-id","in":"header","description":"Tenant id (uuid v4)","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageDto"}}}},"429":{"description":"Returned when the rate limit is exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum number of allowed requests during the current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining number of requests before throttling occurs","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Number of seconds until the rate limit window resets","schema":{"type":"integer"}}}}},"summary":"Remove tag from a material","tags":["Materials"]}}}}
```

## Remove all tags from a material

> The API gives the ability to remove all tags from material.

```json
{"openapi":"3.0.0","info":{"title":"Public API","version":"1.0"},"security":[{"PublicApiKey":[]}],"components":{"securitySchemes":{"PublicApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"MessageDto":{"type":"object","properties":{"message":{"type":"string","description":"Message returned from API confirming the operation"}},"required":["message"]}}},"paths":{"/api/v1/public/materials/{material_id}/tags-all":{"delete":{"description":"The API gives the ability to remove all tags from material.","operationId":"PublicMaterialController_removeAllMaterialTags_v1","parameters":[{"name":"material_id","required":true,"in":"path","description":"Material ID","schema":{"type":"string"}},{"name":"x-tenant-id","in":"header","description":"Tenant id (uuid v4)","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageDto"}}}},"429":{"description":"Returned when the rate limit is exceeded","headers":{"X-RateLimit-Limit":{"description":"Maximum number of allowed requests during the current window","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining number of requests before throttling occurs","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Number of seconds until the rate limit window resets","schema":{"type":"integer"}}}}},"summary":"Remove all tags from a material","tags":["Materials"]}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hesh.app/manuals/public-api/materials.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
