> ## Documentation Index
> Fetch the complete documentation index at: https://help.gorelo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Creates a custom asset.

> The asset is created at a location of the client it belongs to, with one of the service
provider's custom asset types as its hardware type. Its creation is recorded on the asset's
timeline, as it is when the asset is created in the app.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/assets/custom
openapi: 3.0.4
info:
  title: Public API
  description: Gorelo Public API documentation.
  version: 1.0.0
servers:
  - url: https://api.usw.gorelo.io
    description: US
  - url: https://api.aue.gorelo.io
    description: Australia
security:
  - ApiKeyAuth: []
tags:
  - name: Attachments
    description: "Uploading a file, for anything that can carry one. One endpoint rather than one per record\r\ntype, because the upload itself is identical - only the record it is checked against differs."
  - name: Alerts
    description: Alerts management operations
  - name: Assets
    description: Assets management operations
  - name: Billing
    description: Billing management operations
  - name: Tickets
    description: Tickets management operations
  - name: Clients
    description: Clients management operations
  - name: Contacts
    description: Contacts management operations
  - name: Deletions
    description: Deletions management operations
  - name: Documents
    description: Documents management operations
  - name: Forms
    description: Forms management operations
  - name: Organization
    description: Organization management operations
  - name: Projects
    description: Projects management operations
paths:
  /v1/assets/custom:
    post:
      tags:
        - Assets
      summary: Creates a custom asset.
      description: "The asset is created at a location of the client it belongs to, with one of the service\r\nprovider's custom asset types as its hardware type. Its creation is recorded on the asset's\r\ntimeline, as it is when the asset is created in the app."
      operationId: post_v1_assets_custom
      requestBody:
        description: Custom asset details.
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/CreateCustomAssetCommand'
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomAssetCommand'
          text/json:
            schema:
              $ref: '#/components/schemas/CreateCustomAssetCommand'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CreateCustomAssetCommand'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/CreateCustomAssetResultBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCustomAssetResultBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/CreateCustomAssetResultBaseResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '500':
          description: Internal Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
components:
  schemas:
    CreateCustomAssetCommand:
      type: object
      properties:
        Name:
          type: string
          description: >-
            Display name of the asset. Required, max 300 characters, cannot be
            blank.
          example: Reception printer
        ClientId:
          type: integer
          description: >-
            Identifier of the client the asset belongs to. Required; the client
            must be active.
          format: int64
          example: 3521
        LocationId:
          type: integer
          description: "Identifier of the client location the asset sits at. Required; must be an active location of\r\n`ClientId`."
          format: int64
          example: 4410
        HardwareTypeId:
          type: integer
          description: "Identifier of the asset's hardware type, one of the service provider's active custom asset\r\ntypes. Required."
          format: int64
          example: 118
        Description:
          type: string
          description: Free-text description. Optional, max 1000 characters.
          nullable: true
          example: HP LaserJet on the front desk
        ContactId:
          type: integer
          description: "Identifier of the contact the asset is assigned to. Optional; must be an active contact of\r\n`ClientId`."
          format: int64
          nullable: true
          example: 7962
        WarrantyEndDate:
          type: string
          description: >-
            Date the warranty ends, a calendar date in the form yyyy-MM-dd. A
            value with a time or a time zone is rejected. Optional.
          format: date
          nullable: true
          example: '2027-03-31'
        LocalIPAddress:
          type: string
          description: >-
            IPv4 address of the asset, such as 192.168.1.20. Optional. The same
            name an agent asset publishes.
          nullable: true
          example: 192.168.1.20
        IpAddress:
          type: string
          description: "IPv4 address of the asset. Optional. <b>Deprecated:</b> use `LocalIPAddress`. Still accepted;\r\nsending both with different values is a 400."
          nullable: true
          example: 192.168.1.20
          deprecated: true
        SerialNumber:
          type: string
          description: Hardware serial number. Optional, max 250 characters.
          nullable: true
          example: CNB1K23456
        WarrantyStartDate:
          type: string
          description: >-
            Date the warranty starts, a calendar date in the form yyyy-MM-dd. A
            value with a time or a time zone is rejected. Optional. Not shown in
            the Gorelo app.
          format: date
          nullable: true
          example: '2024-03-31'
        Manufacturer:
          type: string
          description: >-
            Manufacturer. Optional, max 300 characters. Not shown in the Gorelo
            app.
          nullable: true
          example: Ubiquiti
        Model:
          type: string
          description: Model. Optional, max 300 characters. Not shown in the Gorelo app.
          nullable: true
          example: UniFi Dream Machine Pro
      additionalProperties: false
      description: "Request body for creating a custom asset. The owning service provider is resolved from the\r\nrequest context, not from the body."
    CreateCustomAssetResultBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          $ref: '#/components/schemas/CreateCustomAssetResult'
        DataContext:
          type: object
          additionalProperties: false
          nullable: true
          example: null
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    ObjectBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          nullable: true
        DataContext:
          $ref: '#/components/schemas/ErrorDataContext'
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    HttpStatusCode:
      enum:
        - 100
        - 101
        - 102
        - 103
        - 200
        - 201
        - 202
        - 203
        - 204
        - 205
        - 206
        - 207
        - 208
        - 226
        - 300
        - 301
        - 302
        - 303
        - 304
        - 305
        - 306
        - 307
        - 308
        - 400
        - 401
        - 402
        - 403
        - 404
        - 405
        - 406
        - 407
        - 408
        - 409
        - 410
        - 411
        - 412
        - 413
        - 414
        - 415
        - 416
        - 417
        - 421
        - 422
        - 423
        - 424
        - 426
        - 428
        - 429
        - 431
        - 451
        - 500
        - 501
        - 502
        - 503
        - 504
        - 505
        - 506
        - 507
        - 508
        - 510
        - 511
      type: integer
      format: int32
    CreateCustomAssetResult:
      type: object
      properties:
        Id:
          type: string
          format: uuid
      additionalProperties: false
      description: The identifier of the created custom asset.
    Error:
      type: object
      properties:
        Code:
          pattern: ^[0-9]{6}$
          type: string
          description: 6-digit MMTTNN error code. See the Public API error-code registry.
          example: '070101'
        Message:
          type: string
        PropertyName:
          type: string
          nullable: true
        ActionHint:
          type: string
          nullable: true
        DocUrl:
          type: string
          nullable: true
      additionalProperties: false
    ErrorDataContext:
      type: object
      properties:
        TraceId:
          type: string
          description: Request correlation id. Quote this when reporting a problem.
          nullable: true
      additionalProperties: false
      description: "The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest."
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: >-
        Your Gorelo API key. See [Generate API key](/generate-api-key). If your
        data is hosted in Australia, click the base URL at the top of this page
        and select `https://api.aue.gorelo.io`.
      name: X-API-Key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.