fabric Inventory Imports API

Inventory Imports endpoints let you upload and download inventory details, in bulk, using a CSV file to and from AWS (Amazon Web Service) server presigned S3 URL that is generated from the Order service

OpenAPI Specification

fabric-com-inventory-imports-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Cart Actions Endpoints Inventory Imports API
  description: fabric's **Cart API** lets you add, update, and remove items from your Storefront cart, either as a guest user or as a logged-in user. It also provides functionality to merge carts when you switch from guest user to logged-in user, and apply coupons and other attributes (for example, gift wrapping) to the line items. Additionally, the API supports more advanced tasks such as using multiple carts within a B2B organization, sharing carts, and supporting a unified cart experience for multi-region and multi-brand businesses.<p>The Cart API provides high performance, scalability, multi-tenancy, and configurability to the end-to-end order processing actions that start from the item being added to the cart; through the pre-checkout stage that includes billing, shipping, and payment details; to the checkout stage where the order is processed and confirmed by fabric's Order Management System (OMS)
  contact:
    name: Cart Support
    email: support.cnc@fabric.inc
  license:
    name: fabric API License
    url: https://fabric.inc/api-license
  version: 3.0.0
servers:
- url: https://api.fabric.inc/v3
security:
- bearerAuth: []
tags:
- description: Inventory Imports endpoints let you upload and download inventory details, in bulk, using a CSV file to and from AWS (Amazon Web Service) server presigned S3 URL that is generated from the Order service
  name: Inventory Imports
paths:
  /inventory-imports:
    post:
      description: Import inventory data by specifying file name. Successfully uploading the file triggers the import process, which is an event-driven extraction of the file's data to update the respective resource's system.
      operationId: createInventoryImport
      parameters:
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricRequestId'
      - $ref: '#/components/parameters/xFabricChannelIdOptional'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/inventoryImportRequest'
        required: true
      responses:
        '201':
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/inventoryImportResponse'
          description: Created
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '400':
          content:
            application/json:
              example:
                errors:
                - message: Invalid request
                  type: CLIENT_ERROR
                message: Bad request
                type: CLIENT_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '401':
          content:
            application/json:
              example:
                message: Unauthorized request
                type: CLIENT_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '404':
          content:
            '*/*':
              example:
                message: Not found
                type: CLIENT_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Not found
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '500':
          content:
            application/json:
              example:
                message: Internal server error
                type: SERVER_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
      summary: Import Inventory Data
      tags:
      - Inventory Imports
  /inventory-imports/search:
    post:
      description: Get uploaded files that match specified criteria. Returned as paginated records.
      operationId: searchInventoryImports
      parameters:
      - description: Number of records to skip before returning records. For example, `offset=20, limit=10` returns records 21-30.
        example: 20
        in: query
        name: offset
        schema:
          default: 0
          example: 20
          type: number
      - description: Maximum number of records per page
        example: 10
        in: query
        name: limit
        schema:
          default: 10
          example: 10
          type: number
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricRequestId'
      - $ref: '#/components/parameters/xFabricChannelIdOptional'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/inventoryImportSearchRequest'
        required: true
      responses:
        '200':
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/searchResponse'
          description: OK
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '400':
          content:
            application/json:
              example:
                errors:
                - message: Invalid request
                  type: CLIENT_ERROR
                message: Bad request
                type: CLIENT_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '401':
          content:
            application/json:
              example:
                message: Unauthorized request
                type: CLIENT_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '500':
          content:
            application/json:
              example:
                message: Internal server error
                type: SERVER_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
      summary: Get Uploaded Files That Match Specified Criteria
      tags:
      - Inventory Imports
  /inventory-imports/{importId}:
    get:
      description: Get uploaded file status and details by specifying `importId`.
      operationId: getInventoryImportStatus
      parameters:
      - description: Upload file document's unique ID
        example: 62ff5c0bec0aed3c86202c32
        in: path
        name: importId
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricRequestId'
      - $ref: '#/components/parameters/xFabricChannelIdOptional'
      responses:
        '200':
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/inventoryImportStatusResponse'
          description: OK
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '400':
          content:
            application/json:
              example:
                errors:
                - message: Invalid request
                  type: CLIENT_ERROR
                message: Bad request
                type: CLIENT_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '401':
          content:
            application/json:
              example:
                message: Unauthorized request
                type: CLIENT_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '404':
          content:
            '*/*':
              example:
                message: Not found
                type: CLIENT_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Not found
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '500':
          content:
            application/json:
              example:
                message: Internal server error
                type: SERVER_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
      summary: Get Uploaded File Status and Details
      tags:
      - Inventory Imports
  /inventory-imports/{importId}/actions/force-trigger:
    post:
      description: Force import halted due to zeroed out Inventories more than threshold
      operationId: forceTriggerBulkUpload
      parameters:
      - in: path
        name: importId
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricChannelId'
      - $ref: '#/components/parameters/xFabricRequestId'
      responses:
        '200':
          content:
            application/json: {}
          description: OK
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '400':
          content:
            application/json:
              example:
                errors:
                - message: Invalid request
                  type: CLIENT_ERROR
                message: Bad request
                type: CLIENT_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '401':
          content:
            application/json:
              example:
                message: Unauthorized request
                type: CLIENT_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
        '500':
          content:
            application/json:
              example:
                message: Internal server error
                type: SERVER_ERROR
              schema:
                $ref: '#/components/schemas/errorResponse'
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponseHeader'
      summary: Force Import Halt
      tags:
      - Inventory Imports
components:
  schemas:
    multipleValuesSearchFilter:
      allOf:
      - $ref: '#/components/schemas/inventoryImportsSearchFilter'
      - properties:
          values:
            items:
              description: A single value is used in combination with `field` (the singleValueSearchFilter), except when the condition is IN or NIN. When the condition is IN or NIN, multiple values are used (the multipleValuesSearchFilter).
              example: ORDER_CREATE
              oneOf:
              - description: Target record's non-numeric identifier
                example: ORDER_CREATE
                type: string
              - description: Target record's numeric identifier
                example: 112233
                format: int64
                type: number
              - description: Target record's numeric identifier
                example: 1122.33
                format: double
                type: number
              type: object
            maxItems: 25
            minItems: 1
            type: array
        type: object
      description: Multiple value search filter
      required:
      - condition
      - field
      type: object
    singleValueSearchFilter:
      allOf:
      - $ref: '#/components/schemas/inventoryImportsSearchFilter'
      - properties:
          value:
            description: A single value is used in combination with `field` (the singleValueSearchFilter), except when the condition is IN or NIN. When the condition is IN or NIN, multiple values are used (the multipleValuesSearchFilter).
            example: ORDER_CREATE
            oneOf:
            - description: Target record's non-numeric identifier
              example: ORDER_CREATE
              type: string
            - description: Target record's numeric identifier
              example: 112233
              format: int64
              type: number
            - description: Target record's numeric identifier
              example: 1122.33
              format: double
              type: number
            type: object
        type: object
      description: Single-value search filter
      required:
      - condition
      - field
      type: object
    inventoryImportRequest:
      description: An object containing the inventory import request details.
      properties:
        fileName:
          description: Uploaded file name
          example: import-file.csv
          type: string
        type:
          enum:
          - INVENTORY
          - INVENTORY_COUNTERS
          example: INVENTORY
          type: string
      required:
      - fileName
      - type
      type: object
    pagination:
      description: Pagination response
      properties:
        count:
          description: Total number of search results
          example: 1000
          format: int32
          type: integer
        limit:
          default: 10
          description: Maximum number of records per page
          example: 10
          format: int32
          maximum: 100
          minimum: 1
          type: integer
        offset:
          default: 0
          description: Number of records to skip before returning all records. For example, `offset=20, limit=10` returns records 21-30.
          example: 1
          format: int32
          minimum: 0
          type: integer
      type: object
    inventoryImportResponse:
      description: An object containing the inventory import response details.
      properties:
        attributes:
          description: A custom attribute placeholder.
          example:
            attribute: '12345'
          type: object
        createdAt:
          description: Time of import request
          example: '2022-08-01T18:03:28.483Z'
          format: date-time
          type: string
        fileName:
          description: Uploaded file name
          example: orderUpload.csv
          type: string
        importId:
          description: Imported file's unique ID
          example: 62ff5c0bec0aed3c86202c32
          type: string
        statusCode:
          description: Uploaded file's current status
          enum:
          - INITIATED
          - PROCESSING
          - COMPLETED
          - SYSTEM_ERROR
          example: INITIATED
          type: string
        type:
          description: Import file type
          enum:
          - INVENTORY
          - INVENTORY_COUNTERS
          example: INVENTORY
          type: string
        updatedAt:
          description: Date and time record was last modified
          example: '2022-08-01T20:03:28.483Z'
          format: date-time
          type: string
        uploadFileUrl:
          description: Uploaded file's path (including security token) generated by the system and returned in the response of the `Create import request` endpoint.
          example: https://example.com/tenant/import/bulk/1654680575676.csv?X-Amz-Security-Token=IQoJb3JpZ2
          type: string
      required:
      - createdAt
      - importId
      - uploadFileUrl
      type: object
    inventoryImportsSearchFilter:
      description: An object containing the inventory import search filter that was.
      discriminator:
        mapping:
          EQ: '#/components/schemas/singleValueSearchFilter'
          GT: '#/components/schemas/singleValueSearchFilter'
          GTE: '#/components/schemas/singleValueSearchFilter'
          IN: '#/components/schemas/multipleValuesSearchFilter'
          LT: '#/components/schemas/singleValueSearchFilter'
          LTE: '#/components/schemas/singleValueSearchFilter'
          NEQ: '#/components/schemas/singleValueSearchFilter'
          NIN: '#/components/schemas/multipleValuesSearchFilter'
        propertyName: condition
      properties:
        condition:
          default: EQ
          description: Search condition to apply filter
          enum:
          - EQ
          - NEQ
          - IN
          - NIN
          - LT
          - GT
          - LTE
          - GTE
          example: EQ
          type: string
        field:
          description: Field name
          example: import.events
          pattern: ^import\.[a-zA-Z.\-_]*
          type: string
        group:
          default: Default
          description: Group name
          example: GroupA
          type: string
      required:
      - condition
      - field
      type: object
    importCount:
      description: Import count object
      properties:
        error:
          description: Total rows with errors in the file
          example: 2000
          format: int32
          type: integer
        processed:
          description: Total rows processed in the file. `processed` = `uploaded` - `error` **Note:** Rows that are not formatted according to system requirements will not be imported.
          example: 8000
          format: int32
          type: integer
        uploaded:
          description: Total rows in the file
          example: 10000
          format: int32
          type: integer
      type: object
    searchResponse:
      description: Search response
      properties:
        data:
          items:
            $ref: '#/components/schemas/inventoryImportStatusResponse'
          type: array
        pagination:
          $ref: '#/components/schemas/pagination'
      type: object
    inventoryImportStatusResponse:
      description: An object containing the inventory import status response details.
      properties:
        attributes:
          description: 'Custom attributes. This is a placeholder for additional info in key: value pairs'
          example:
            attribute: '12345'
          type: object
        createdAt:
          description: Time of import request
          example: '2022-08-01T18:03:28.483Z'
          format: date-time
          type: string
        errorFileUrl:
          description: 'Directory path where file uploaded '
          example: https://example.com/tenant/import/bulk/1654680575676.csv?X-Amz-Security-Token=IQoJb3JpZ2
          type: string
        fileName:
          description: Uploaded file name
          example: orderUpload.csv
          type: string
        finishedAt:
          description: Date and time file import was completed
          example: '2022-08-01T18:03:28.483Z'
          format: date-time
          type: string
        importCount:
          $ref: '#/components/schemas/importCount'
        importId:
          description: Imported file's unique ID
          example: 62ff5c0bec0aed3c86202c32
          type: string
        originalFileUrl:
          description: Path to download the uploaded file
          example: https://example.com/tenant/import/bulk/1654680575676.csv?X-Amz-Security-Token=IQoJb3JpZ2
          type: string
        statusCode:
          description: Uploaded file's current status
          enum:
          - INITIATED
          - PROCESSING
          - COMPLETED
          - SYSTEM_ERROR
          example: INITIATED
          type: string
        type:
          enum:
          - INVENTORY
          - INVENTORY_COUNTERS
          example: INVENTORY
          type: string
        updatedAt:
          description: Date and time record was last modified
          example: '2022-08-01T20:03:28.483Z'
          format: date-time
          type: string
      required:
      - createdAt
      - importId
      type: object
    inventoryImportSearchRequest:
      description: An object containing the inventory import search request details.
      example:
        filters:
        - field: import.statusCode
          value: INITIATED
        sort: -import.finishedAt
      properties:
        filters:
          items:
            oneOf:
            - $ref: '#/components/schemas/multipleValuesSearchFilter'
            - $ref: '#/components/schemas/singleValueSearchFilter'
          maxItems: 50
          minItems: 0
          type: array
        sort:
          default: -import.createdAt
          description: Property on which data is to be sorted. Prefix with `+` to sort ascending, and `-` to sort descending.
          example: +import.createdAt
          pattern: (^[+-]import\.[a-zA-Z.\-_]*)(,([+-]import\.[a-zA-Z.\-_]*)){0,}
          type: string
      required:
      - filters
      type: object
    errorResponse:
      description: Error response
      properties:
        errors:
          description: Errors
          items:
            $ref: '#/components/schemas/errorResponse'
          type: array
        message:
          description: Error message
          example: Bad request
          type: string
        type:
          description: Error type
          example: CLIENT_ERROR
          type: string
      type: object
  parameters:
    xFabricTenantId:
      description: A header used by fabric to identify the tenant making the request. You must include tenant id in the authentication header for an API request to access any of fabric’s endpoints. You can retrieve the tenant id , which is also called account id, from [Copilot](/v3/platform/settings/account-details/getting-the-account-id). This header is required.
      example: 5f328bf0b5f328bf0b5f328b
      in: header
      name: x-fabric-tenant-id
      required: true
      schema:
        type: string
    xFabricChannelId:
      description: x-fabric-channel-id identifies the sales channel where the API request is being made; primarily for multichannel use cases. The channel ids are 12 corresponding to US and 13 corresponding to Canada. The default channel id is 12. This field is required.
      example: '12'
      in: header
      name: x-fabric-channel-id
      required: true
      schema:
        type: string
    xFabricChannelIdOptional:
      description: x-fabric-channel-id identifies the sales channel through which the API request is being made; primarily for multichannel use cases. It is an optional field. The default US channel is 12 while the default Canada channel is 13.
      example: '12'
      in: header
      name: x-fabric-channel-id
      required: false
      schema:
        type: string
    xFabricRequestId:
      description: Unique request ID
      example: 263e731c-45c8-11ed-b878-0242ac120002
      in: header
      name: x-fabric-request-id
      required: false
      schema:
        type: string
  headers:
    xFabricRequestIdResponseHeader:
      description: Unique request ID
      example: 263e731c-45c8-11ed-b878-0242ac120002
      required: false
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'This is the authorization token used to authenticate the request. You must pass the access token generated from the system app. For more information, see the [Making your first API request](/v3/api-reference/getting-started/getting-started-with-fabric-apis#procedure) section.

        '