Coperniq catalogItems API

The catalogItems API from Coperniq — 2 operation(s) for catalogitems.

OpenAPI Specification

coperniq-catalogitems-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: API Key accounts catalogItems API
  version: 1.0.0
servers:
- url: https://api.coperniq.io/v1
  description: Production server
tags:
- name: catalogItems
paths:
  /catalog-items:
    get:
      operationId: list-catalog-items
      summary: List Catalog Items
      description: 'Lists catalog items (products and services).

        '
      tags:
      - catalogItems
      parameters:
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: List of catalog items
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CatalogItem'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListCatalogItemsRequestUnauthorizedError'
    post:
      operationId: create-catalog-item
      summary: Create Catalog Item
      description: Create a new catalog item.
      tags:
      - catalogItems
      parameters:
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Catalog item created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogItem'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCatalogItemRequestBadRequestError'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCatalogItemRequestUnauthorizedError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CatalogItemCreate'
  /catalog-items/{catalogItemId}:
    get:
      operationId: get-catalog-item
      summary: Get Catalog Item
      description: Retrieve a specific catalog item by ID.
      tags:
      - catalogItems
      parameters:
      - name: catalogItemId
        in: path
        description: Catalog item identifier
        required: true
        schema:
          type: integer
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Catalog item details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogItem'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCatalogItemRequestUnauthorizedError'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCatalogItemRequestNotFoundError'
    patch:
      operationId: update-catalog-item
      summary: Update Catalog Item
      description: 'Update an existing catalog item.

        '
      tags:
      - catalogItems
      parameters:
      - name: catalogItemId
        in: path
        description: Catalog item identifier
        required: true
        schema:
          type: integer
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Catalog item updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogItem'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCatalogItemRequestBadRequestError'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCatalogItemRequestUnauthorizedError'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCatalogItemRequestNotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CatalogItemUpdate'
    delete:
      operationId: delete-catalog-item
      summary: Delete Catalog Item
      description: 'Archives the catalog item (soft delete). The item is marked as archived and will no longer appear in list or lookup responses, but is not permanently removed.

        '
      tags:
      - catalogItems
      parameters:
      - name: catalogItemId
        in: path
        description: Catalog item identifier
        required: true
        schema:
          type: integer
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteCatalogItemRequestUnauthorizedError'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteCatalogItemRequestNotFoundError'
components:
  schemas:
    CatalogItemType:
      type: string
      enum:
      - PRODUCT
      - SERVICE
      description: Catalog item type
      title: CatalogItemType
    UpdateCatalogItemRequestNotFoundError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/CatalogItemsCatalogItemIdPatchResponsesContentApplicationJsonSchemaCode'
      title: UpdateCatalogItemRequestNotFoundError
    CatalogItemCreateType:
      type: string
      enum:
      - PRODUCT
      - SERVICE
      description: Catalog item type
      title: CatalogItemCreateType
    CatalogItemsCatalogItemIdPatchResponsesContentApplicationJsonSchemaCode:
      type: string
      enum:
      - NOT_FOUND
      title: CatalogItemsCatalogItemIdPatchResponsesContentApplicationJsonSchemaCode
    DeleteCatalogItemRequestNotFoundError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/CatalogItemsCatalogItemIdDeleteResponsesContentApplicationJsonSchemaCode'
      title: DeleteCatalogItemRequestNotFoundError
    CatalogItemUpdate:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/CatalogItemUpdateType'
          description: Catalog item type
        name:
          type: string
          description: Catalog item name
        category:
          $ref: '#/components/schemas/CatalogCategoryCode'
          description: Catalog item category code. Must be a valid ProductCategory or ServiceCategory value.
        code:
          type: string
          description: Catalog item code
        description:
          type:
          - string
          - 'null'
          description: Catalog item description
        cost:
          type: number
          format: double
          description: Catalog item cost
        price:
          type: number
          format: double
          description: Catalog item price
        tradeGroup:
          $ref: '#/components/schemas/TradeGroup'
          description: High-level trade group for this item.
        preferredVendorId:
          type:
          - integer
          - 'null'
          description: ID of the preferred vendor. Pass null to clear the preferred vendor.
      title: CatalogItemUpdate
    CatalogItemCreate:
      type: object
      properties:
        name:
          type: string
          description: Catalog item name
        type:
          $ref: '#/components/schemas/CatalogItemCreateType'
          description: Catalog item type
        category:
          $ref: '#/components/schemas/CatalogCategoryCode'
          description: Catalog item category code. Must be a valid ProductCategory when type is PRODUCT or ServiceCategory when type is SERVICE.
        cost:
          type: number
          format: double
          description: Catalog item cost
        price:
          type: number
          format: double
          description: Catalog item price
        tradeGroup:
          $ref: '#/components/schemas/TradeGroup'
          description: High-level trade group for this item. Defaults to OTHER if not provided. When provided, it must be consistent with the category (for products, the category must belong to this trade group; category OTHER is allowed under any trade group).
        manufacturer:
          type:
          - string
          - 'null'
          description: Catalog item manufacturer
        sku:
          type:
          - string
          - 'null'
          description: Catalog item SKU
        code:
          type:
          - string
          - 'null'
          description: Catalog item code
        description:
          type:
          - string
          - 'null'
          description: Catalog item description
        preferredVendorId:
          type:
          - integer
          - 'null'
          description: ID of the preferred vendor (must be an existing active vendor for this company)
      required:
      - name
      - type
      - category
      - cost
      - price
      title: CatalogItemCreate
    ProductCategory:
      type: string
      enum:
      - BATTERY_SYSTEM
      - BATTERY_MANAGEMENT_SYSTEM
      - CHARGING_GATEWAY
      - COMBINER_BOX
      - EV_CHARGER
      - LOAD_CENTER
      - MICROINVERTER
      - MOUNTING
      - POWER_OPTIMIZER
      - PRODUCTION_METER
      - PV_INVERTER
      - PV_MODULE
      - RACKING
      - RAPID_SHUTDOWN_DEVICE
      - TRACKER
      - WEATHER_STATION
      - AIR_CONDITIONER
      - AIR_HANDLING_UNIT
      - BOILER
      - CHILLER
      - COOLING_TOWER
      - FAN
      - HEAT_EXCHANGER
      - HEAT_PUMP
      - MAKE_UP_AIR_UNIT
      - PUMP
      - ROOFTOP_UNIT
      - THERMOSTAT
      - VARIABLE_FREQUENCY_DRIVE
      - AUTOMATIC_TRANSFER_SWITCH
      - BREAKER
      - DISCONNECT_SWITCH
      - ELECTRIC_METER
      - GENERATOR
      - LIGHTING_PANEL
      - PANELBOARD
      - SWITCHGEAR
      - TRANSFORMER
      - UNINTERRUPTIBLE_POWER_SUPPLY
      - WIRE
      - BACKFLOW_PREVENTER
      - BOOSTER_PUMP
      - GREASE_INTERCEPTOR
      - STORAGE_TANK
      - SUMP_PUMP
      - VALVE
      - WATER_FILTRATION_SYSTEM
      - WATER_HEATER
      - WATER_SOFTENER
      - ACCESS_CONTROLLER
      - AUTOMATION_CONTROLLER
      - CAMERA
      - CARD_READER
      - DOOR_STRIKE
      - MAGLOCK
      - NETWORK_SWITCH
      - NETWORK_VIDEO_RECORDER
      - SENSOR
      - WIRELESS_ACCESS_POINT
      - ROOF_COVERING
      - ROOF_UNDERLAYMENT
      - ROOF_MEMBRANE
      - ROOF_FLASHING
      - ROOF_VENT
      - WALL_CLADDING
      - WALL_TRIM
      - WEATHER_BARRIER
      - WINDOW
      - EXTERIOR_DOOR
      - SKYLIGHT
      - OPENING_FLASHING
      - GUTTER
      - DOWNSPOUT
      - INSULATION
      - SEALANT
      - SHEATHING
      - OTHER
      description: Product catalog category.
      title: ProductCategory
    TradeGroup:
      type: string
      enum:
      - ENERGY
      - MECHANICAL
      - ELECTRICAL
      - PLUMBING
      - LOW_VOLTAGE
      - ENVELOPE
      - OTHER
      description: High-level trade group for catalog items.
      title: TradeGroup
    ListCatalogItemsRequestUnauthorizedError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/CatalogItemsGetResponsesContentApplicationJsonSchemaCode'
      title: ListCatalogItemsRequestUnauthorizedError
    ServiceCategory:
      type: string
      enum:
      - ADJUSTMENT
      - BALANCING
      - CALIBRATION
      - CLEANING
      - COMMISSIONING
      - DECOMMISSIONING
      - DIAGNOSTICS
      - ENGINEERING
      - EQUIPMENT_RENTAL
      - INSPECTION
      - INSTALLATION
      - MAINTENANCE
      - MONITORING
      - OPTIMIZATION
      - PERMITTING
      - RELOCATION
      - REMOVAL
      - REPAIR
      - REPLACEMENT
      - RETROFIT
      - SITE_SURVEY
      - TESTING
      - TRAINING
      - OTHER
      description: Service catalog category.
      title: ServiceCategory
    CatalogItemsPostResponsesContentApplicationJsonSchemaCode:
      type: string
      enum:
      - UNAUTHORIZED
      title: CatalogItemsPostResponsesContentApplicationJsonSchemaCode
    UpdateCatalogItemRequestUnauthorizedError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/CatalogItemsCatalogItemIdPatchResponsesContentApplicationJsonSchemaCode'
      title: UpdateCatalogItemRequestUnauthorizedError
    UpdateCatalogItemRequestBadRequestError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/CatalogItemsCatalogItemIdPatchResponsesContentApplicationJsonSchemaCode'
        field:
          type: string
          description: Field that caused the validation error (if applicable)
      title: UpdateCatalogItemRequestBadRequestError
    CatalogItemsGetResponsesContentApplicationJsonSchemaCode:
      type: string
      enum:
      - UNAUTHORIZED
      title: CatalogItemsGetResponsesContentApplicationJsonSchemaCode
    CatalogItemsCatalogItemIdGetResponsesContentApplicationJsonSchemaCode:
      type: string
      enum:
      - NOT_FOUND
      title: CatalogItemsCatalogItemIdGetResponsesContentApplicationJsonSchemaCode
    GetCatalogItemRequestNotFoundError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/CatalogItemsCatalogItemIdGetResponsesContentApplicationJsonSchemaCode'
      title: GetCatalogItemRequestNotFoundError
    CatalogItemImage:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        url:
          type: string
          description: URL to download the image
      title: CatalogItemImage
    CatalogItemsCatalogItemIdDeleteResponsesContentApplicationJsonSchemaCode:
      type: string
      enum:
      - NOT_FOUND
      title: CatalogItemsCatalogItemIdDeleteResponsesContentApplicationJsonSchemaCode
    CatalogItemUpdateType:
      type: string
      enum:
      - PRODUCT
      - SERVICE
      description: Catalog item type
      title: CatalogItemUpdateType
    DeleteCatalogItemRequestUnauthorizedError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/CatalogItemsCatalogItemIdDeleteResponsesContentApplicationJsonSchemaCode'
      title: DeleteCatalogItemRequestUnauthorizedError
    CreateCatalogItemRequestUnauthorizedError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/CatalogItemsPostResponsesContentApplicationJsonSchemaCode'
      title: CreateCatalogItemRequestUnauthorizedError
    GetCatalogItemRequestUnauthorizedError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/CatalogItemsCatalogItemIdGetResponsesContentApplicationJsonSchemaCode'
      title: GetCatalogItemRequestUnauthorizedError
    CatalogCategoryCode:
      oneOf:
      - $ref: '#/components/schemas/ProductCategory'
      - $ref: '#/components/schemas/ServiceCategory'
      description: 'Catalog item category code.

        Must be:

        - one of `ProductCategory` when `type` is `PRODUCT`, or

        - one of `ServiceCategory` when `type` is `SERVICE`.

        '
      title: CatalogCategoryCode
    CatalogItem:
      type: object
      properties:
        id:
          type: integer
          description: Catalog item identifier
        name:
          type: string
          description: Catalog item name
        catalog:
          oneOf:
          - $ref: '#/components/schemas/TradeGroup'
          - type: 'null'
          description: High-level trade group for this item.
        type:
          $ref: '#/components/schemas/CatalogItemType'
          description: Catalog item type
        category:
          $ref: '#/components/schemas/CatalogCategoryCode'
          description: Catalog item category code (ProductCategory or ServiceCategory)
        manufacturer:
          type:
          - string
          - 'null'
          description: Catalog item manufacturer
        sku:
          type:
          - string
          - 'null'
          description: Catalog item SKU
        code:
          type:
          - string
          - 'null'
          description: Catalog item code
        cost:
          type:
          - number
          - 'null'
          format: double
          description: Catalog item cost
        price:
          type:
          - number
          - 'null'
          format: double
          description: Catalog item price
        description:
          type:
          - string
          - 'null'
          description: Catalog item description
        image:
          oneOf:
          - $ref: '#/components/schemas/CatalogItemImage'
          - type: 'null'
        isArchived:
          type:
          - boolean
          - 'null'
          description: Whether the catalog item is archived
        createdById:
          type: integer
          description: Identifier of the user who created the catalog item
        createdAt:
          type:
          - string
          - 'null'
          format: date-time
        updatedAt:
          type:
          - string
          - 'null'
          format: date-time
        preferredVendorId:
          type:
          - integer
          - 'null'
          description: ID of the preferred vendor (must be an existing active vendor for this company)
      required:
      - id
      - name
      - catalog
      - type
      - category
      - cost
      - price
      title: CatalogItem
    CreateCatalogItemRequestBadRequestError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/CatalogItemsPostResponsesContentApplicationJsonSchemaCode'
        field:
          type: string
          description: Field that caused the validation error (if applicable)
      title: CreateCatalogItemRequestBadRequestError
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic