> ## Documentation Index > Fetch the complete documentation index at: https://learn.servitly.com/llms.txt > Use this file to discover all available pages before exploring further. # Create new product-model-part > Creates a new product-model-part, i.e. a component of a product-model.
Parts can be nested through parentProductModelPartId in order to describe the structure of the product, can be placed within the technical scheme of the parent element and can declare their own thing-definition when the component is connected on its own.

Required permissions: READ_PRODUCT_MODEL, WRITE_PRODUCT_MODEL. ## OpenAPI ````json POST /inventory/productModelParts { "openapi": "3.1.0", "info": { "title": "Servitly DPS API", "version": "1.0.0" }, "servers": [ { "url": "https://api.servitly-sandbox.com", "description": "[AWS SANDBOX]" }, { "url": "https://api.servitly.com", "description": "[AWS PRODUCTION Ireland]" }, { "url": "https://api-ap.servitly.com", "description": "[AWS Hong Kong]" }, { "url": "https://azapi.servitly-dev.com", "description": "[AZURE DEV Frankfurt]" }, { "url": "https://azapi.servitly-staging.com", "description": "[AZURE STAGING Frankfurt]" }, { "url": "https://azapi.servitly.com", "description": "[AZURE PRODUCTION Frankfurt]" } ], "security": [ { "bearerAuth": [] } ], "tags": [ { "name": "ACTIONS" }, { "name": "ALERTS" }, { "name": "API GATEWAY" }, { "name": "AUTHENTICATION" }, { "name": "AUTHORIZATIONS" }, { "name": "CUSTOMERS" }, { "name": "DATA IMPORT / EXPORT" }, { "name": "EVENTS" }, { "name": "LOCATIONS" }, { "name": "MAINTENANCE" }, { "name": "MAPPING" }, { "name": "METRIC DATA" }, { "name": "MOBILE APP" }, { "name": "ORGANIZATION" }, { "name": "PARTNERS" }, { "name": "PRODUCT MODELS" }, { "name": "SPARE PARTS" }, { "name": "STATISTICS" }, { "name": "STORE ORDERS" }, { "name": "SUBSCRIPTIONS" }, { "name": "SUBSCRIPTIONS (OLD)" }, { "name": "THING CONTROL" }, { "name": "THING DEFINITIONS" }, { "name": "THING MANAGEMENT" }, { "name": "THINGS" }, { "name": "TICKETS" }, { "name": "USER TYPES" }, { "name": "USERS" }, { "name": "WORK SESSIONS" } ], "paths": { "/inventory/productModelParts": { "post": { "summary": "Create new product-model-part", "description": "Creates a new product-model-part, i.e. a component of a product-model.
Parts can be nested through parentProductModelPartId in order to describe the structure of the product, can be placed within the technical scheme of the parent element and can declare their own thing-definition when the component is connected on its own.

Required permissions: READ_PRODUCT_MODEL, WRITE_PRODUCT_MODEL.", "tags": [ "PRODUCT MODELS" ], "parameters": [ { "$ref": "#/components/parameters/tenantNameHeader" } ], "requestBody": { "description": "The details of the product-model being created.", "required": "true", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductModelPart" } } } }, "responses": { "201": { "description": "Successful creation.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductModelPart" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/NotAuthenticated" }, "403": { "$ref": "#/components/responses/NotAuthorized" }, "429": { "$ref": "#/components/responses/ApiLimit" }, "500": { "$ref": "#/components/responses/IntError" } } } } }, "components": { "parameters": { "tenantNameHeader": { "in": "header", "name": "X-Servitly-Tenant", "required": "true", "schema": { "type": "string", "example": "{{tenantName}}" }, "description": "The name of the tenant (e.g. acme)." } }, "schemas": { "ProductModelPart": { "type": "object", "required": [ "name" ], "properties": { "id": { "type": "string", "description": "The product-model-part object identifier.", "readOnly": "true" }, "name": { "type": "string", "description": "The product-model-part name." }, "description": { "type": "string", "description": "The product-model-part description text." }, "technicalDescription": { "type": "string", "description": "The product-model-part technical description text." }, "technicalSchemes": { "description": "The technical schemes associated with this product-model.", "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The schema identification code." }, "name": { "type": "string", "description": "The schema name." }, "description": { "type": "string", "description": "The schema description text." }, "imageUrl": { "type": "string", "description": "The schema HTTPS image URL." }, "contentType": { "type": "string", "enum": [ "PNG", "SVG" ], "description": "The schema image content type. In case of SVG, the schema is embedded into the page HTML and becomes clickable according to positions." } } } }, "productModelId": { "type": "string", "description": "The id of the parent product-model." }, "parentProductModelPartId": { "type": "string", "description": "The id of the parent product-model-part in case of sub-part." }, "thingDefinitionId": { "type": "string", "description": "The id of the thing-definition with which the product-model-part is associated." }, "technicalSchemePosition": { "type": "string", "description": "The position identifier within the scheme of the parent element (product model or model part)." } } } }, "responses": { "BadRequest": { "description": "Request data not valid.", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "The error response.", "example": "Bad request" } } } } } }, "NotAuthenticated": { "description": "User not authenticated.", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "The error response.", "example": "User not authenticated" } } } } } }, "NotAuthorized": { "description": "User not authorized.", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "The error response.", "example": "User not authorized" } } } } } }, "ApiLimit": { "description": "API call rate limit exceeded.", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "The error response.", "example": "API call rate limit exceeded" } } } } } }, "IntError": { "description": "Internal server error.", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "The error response.", "example": "Internal Server Error" } } } } } } }, "securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer" } } } } ````