openapi: 3.0.1
info:
title: Cart Actions Endpoints Catalog Connector Files 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.
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:
- name: Catalog Connector Files
description: Retrieve an import template, import a file to the Catalog Connector, view import and export status, and download a previously processed file.
paths:
/catalog-connector-templates/actions/generate:
post:
tags:
- Catalog Connector Files
summary: Retrieve an Import Template
description: Use this endpoint to retrieve the product import template for Catalog Connector in either CSV or JSONL format, based on your preferred data handling method. You can open CSV template in applications, such as Excel or Google Sheets and JSONL template in text editors compatible with JSONL, such as Visual Studio Code. After filling in product data, save the template file with a unique name on your local system.
operationId: generateTemplate
parameters:
- $ref: '#/components/parameters/xFabricTenantId'
- $ref: '#/components/parameters/xFabricRequestId'
requestBody:
$ref: '#/components/requestBodies/generateTemplateRequest'
responses:
'200':
description: OK
content:
text/csv: {}
headers:
x-fabric-request-id:
$ref: '#/components/headers/xFabricRequestId'
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/notAuthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFoundError'
'500':
$ref: '#/components/responses/internalServerError'
/catalog-connector-files:
post:
tags:
- Catalog Connector Files
summary: Create a File Object and Retrieve the File Upload URL
description: Use this endpoint to retrieve the URL of the AWS S3 location to upload the file that you want to import to the Catalog Connector.
operationId: createFile
parameters:
- $ref: '#/components/parameters/xFabricTenantId'
- $ref: '#/components/parameters/xFabricRequestId'
requestBody:
$ref: '#/components/requestBodies/createProductFileRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/file'
headers:
x-fabric-request-id:
$ref: '#/components/headers/xFabricRequestId'
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/notAuthorized'
'403':
$ref: '#/components/responses/forbidden'
'500':
$ref: '#/components/responses/internalServerError'
get:
tags:
- Catalog Connector Files
summary: Retrieve Import and Export History
description: 'Use this endpoint to access files previously imported to or exported from the Catalog Connector, sorted in chronological order. You can refine the search results by using the following query parameters:
- `ids`: Provide a comma-separated list of file IDs to retrieve multiple files by their IDs. Note that pagination isn''t supported when using this parameter.
- Format type (`formatType`) : Specify the format of the file to filter files by format. The options are **CSV** or **JSONL**.
- Operation type (`type`): Use this parameter to specify whether you want imported or exported files.
- Pagination (`offset`, `limit`): Use offset and limit parameters to refine the number of results returned.
- `sort`: Use this parameter to view results in ascending or descending order.
If no query parameters are specified, the endpoint returns up to 10 records.
'
operationId: getFiles
parameters:
- $ref: '#/components/parameters/xFabricTenantId'
- $ref: '#/components/parameters/xFabricRequestId'
- $ref: '#/components/parameters/ids'
- $ref: '#/components/parameters/fileName'
- $ref: '#/components/parameters/formatTypeQueryParam'
- $ref: '#/components/parameters/productFileType'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sortBy'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/getFilesResponse'
headers:
x-fabric-request-id:
$ref: '#/components/headers/xFabricRequestId'
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/notAuthorized'
'403':
$ref: '#/components/responses/forbidden'
'500':
$ref: '#/components/responses/internalServerError'
/catalog-connector-files/actions/download:
get:
tags:
- Catalog Connector Files
summary: Download a File by ID
description: 'Use this endpoint to retrieve the URL used to download a previously processed file. You can then make a GET request with this URL to retrieve the products data in CSV or JSONL format.
The download link is valid for five minutes.
'
parameters:
- $ref: '#/components/parameters/xFabricTenantId'
- $ref: '#/components/parameters/xFabricRequestId'
- $ref: '#/components/parameters/fileId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/fileDownloadResponse'
headers:
x-fabric-request-id:
$ref: '#/components/headers/xFabricRequestId'
'400':
$ref: '#/components/responses/badRequest'
'401':
$ref: '#/components/responses/notAuthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/notFoundError'
'500':
$ref: '#/components/responses/internalServerError'
components:
parameters:
fileName:
in: query
name: fileName
schema:
type: string
description: Use this endpoint to specify the name of the file you want to retrieve.
example: bulk_import_123345677788999.csv
xFabricTenantId:
in: header
name: x-fabric-tenant-id
schema:
type: string
required: true
example: 5f328bf0b5f328bf0b5f328b
description: A header retrieved from your [Copilot Account Details](/v3/platform/settings/account-details/getting-the-account-id) that's used by the API to identify the tenant making the request. Tenant ID must be included in the authentication header for API requests to access any of fabric’s endpoints.
productFileType:
in: query
name: type
schema:
$ref: '#/components/schemas/productFileJobTypes'
description: Specify the type of operation or job performed when the file was uploaded.
xFabricRequestId:
in: header
name: x-fabric-request-id
description: Unique request ID
schema:
type: string
example: 263e731c-45c8-11ed-b878-0242ac120002
required: false
sortBy:
in: query
name: sort
description: The sorting criteria. Currently, the supported values are `updatedAt` and `name`. Use `-` for descending order and `+` for ascending.
schema:
type: string
example: +name,-updatedAt
required: false
formatTypeQueryParam:
in: query
name: formatType
description: Depending on the context, it represents the format of the file or template.
schema:
$ref: '#/components/schemas/formatTypes'
example: csv
fileId:
in: query
name: fileId
description: A 24-character system-generated file ID.
schema:
type: string
example: 5f328bf0b5f328bf0b5f328b
required: true
ids:
in: query
name: ids
description: "The 24-character system-generated file ID created using the [Create a File](/v3/api-reference/catalog-connector/files/create-file) endpoint.\n\nDepending on the type of IDs, the array represents the file IDs or job IDs. Specify up to 15 IDs separated by commas. Note the following limitations of using this parameter:\n - This parameter can't be combined with any other parameters. \n - Pagination isn't supported when this parameter is specified.\n"
schema:
type: string
example: 5f328bf0b5f328bf0b5f328b, 1e328bf0b5f328bf0b5f3287
offset:
in: query
name: offset
description: The number of records to skip before returning records. For example, with an offset of 20 and limit of 10, the system returns records from 21 to 30.
schema:
type: integer
format: int32
default: 0
example: 2
required: false
limit:
in: query
name: limit
description: The maximum number of records per page.
schema:
type: integer
format: int32
default: 10
example: 20
responses:
internalServerError:
description: Internal server error
headers:
x-fabric-request-id:
$ref: '#/components/headers/xFabricRequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/genericError'
example:
type: SERVER_ERROR
message: Internal Server Error
forbidden:
description: The user isn't allowed to perform this action.
headers:
x-fabric-request-id:
$ref: '#/components/headers/xFabricRequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/genericError'
example:
type: REQUEST_DENIED
message: User does not have the required permission
badRequest:
description: Request is invalid or malformed
headers:
x-fabric-request-id:
$ref: '#/components/headers/xFabricRequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/genericError'
notFoundError:
description: The requested entity isn't found
headers:
x-fabric-request-id:
$ref: '#/components/headers/xFabricRequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/genericError'
example:
type: NOT_FOUND
message: Resource not found
notAuthorized:
description: The requester is unauthorized.
headers:
x-fabric-request-id:
$ref: '#/components/headers/xFabricRequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/genericError'
example:
type: UNAUTHORIZED_ERROR
message: Requester is unauthorized
schemas:
productsType:
type: string
enum:
- ITEM
- BUNDLE
description: Specify the product type you want to import using the product import template you will receive from a successful response.
example: ITEM
productFileJobTypes:
type: string
enum:
- CATALOG_CONN_ITEM_VARIANT_IMPORT
- CATALOG_CONN_ITEM_VARIANT_EXPORT
- CATALOG_CONN_BUNDLE_IMPORT
- CATALOG_CONN_BUNDLE_EXPORT
description: Specify the type of operation or job performed by uploading the file.
example: CATALOG_CONN_ITEM_VARIANT_IMPORT
fileDownloadResponse:
type: object
description: The URL generated in the response of the `Download a file by ID` request.
properties:
location:
type: string
description: The URL to download an imported file.
format: uri
example: https://pim-v3-dev02-us-east-1-files.s3.us-east-1.amazonaws.com/local/PRODUCT_EXPORT/abc.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=EXAMPLEACCESSKEYID%252F20230317%252Fus-east-1%252Fs3%252Faws4_request&X-Amz-Date=20230317T171516Z&X-Amz-Expires=300&X-Amz-Signature=EXAMPLESIGNATURE&X-Amz-SignedHeaders=host&x-id=GetObject
formatTypes:
type: string
enum:
- csv
- jsonl
description: Specify the file format used to upload to Catalog Connector.
example: jsonl
commonFileSchema:
type: object
description: The details of the file.
properties:
id:
type: string
description: The 24-character system-generated file ID created using the [Create a File](/v3/api-reference/catalog-connector/files/create-file) endpoint.
example: 857f1f77bcf86cd799439054
type:
$ref: '#/components/schemas/productFileJobTypes'
name:
type: string
description: The name of the file to be uploaded to the AWS S3 location.
example: bulk_import_123345677788999.csv
locale:
$ref: '#/components/schemas/locale'
formatType:
$ref: '#/components/schemas/formatTypes'
createdAt:
type: string
description: The time of file creation, in UTC format.
example: '2021-09-14T22:10:30.618Z'
updatedBy:
type: string
description: The email of the user who last updated the file.
example: test@email.com
updatedAt:
type: string
description: The time of last update to the file, in UTC format.
example: '2021-09-14T22:10:30.618Z'
getFilesResponse:
type: object
description: The response of the `Retrieve import or export history` request, along with pagination data.
properties:
data:
type: array
items:
$ref: '#/components/schemas/commonFileSchema'
offset:
description: 'The number of records to skip before returning records.
For example, when the offset is 20 and limit is 10, the system returns the records from 21 to 30.'
type: integer
format: int32
default: 0
example: 5
limit:
description: The maximum number of records per page.
type: integer
format: int32
default: 10
example: 10
count:
description: The total number of records.
type: integer
format: int32
example: 100
locale:
type: string
description: 'The language code, which is a combination of language (ISO 639 format) and country (ISO 3166 format).
The default value is `en-US`.
'
example: en-US
file:
allOf:
- $ref: '#/components/schemas/newCommonFileSchema'
- type: object
properties:
location:
type: string
description: The AWS S3 file location of the imported file is provided as a URL.
example: https://s3.console.aws.amazon.com/s3/buckets/greatwall-stg01-bulk-import-pim/bulk_import_123345677788999.csv
newCommonFileSchema:
type: object
description: The details of the file.
properties:
id:
type: string
description: A 24-character system-generated file ID.
example: 857f1f77bcf86cd799439054
type:
$ref: '#/components/schemas/productFileJobTypes'
name:
type: string
description: The name of the file name to be uploaded to the AWS S3 location.
example: bulk_import_123345677788999.csv
locale:
$ref: '#/components/schemas/locale'
formatType:
$ref: '#/components/schemas/formatTypes'
createdAt:
type: string
description: The time of file creation, in UTC format.
example: '2021-09-14T22:10:30.618Z'
updatedBy:
type: string
description: The email of the user who last updated the file.
example: test@email.com
updatedAt:
type: string
description: The time of last update to the file, in UTC format.
example: '2021-09-14T22:10:30.618Z'
genericError:
type: object
description: The details of the error.
properties:
message:
type: string
description: A placeholder error message for all the 4xx, 5xx errors
example: Request is invalid
type:
type: string
description: A placeholder error type for all the 4xx, 5xx errors
example: Bad request
errors:
type: array
items:
type: object
properties:
type:
type: string
description: The error type.
example: CLIENT_ERROR
message:
type: string
description: The error message corresponding to the `type`.
example: Invalid request. Unable to find/create product
requestBodies:
generateTemplateRequest:
content:
application/json:
schema:
additionalProperties: false
description: Template request
required:
- type
- formatType
properties:
type:
$ref: '#/components/schemas/productsType'
formatType:
$ref: '#/components/schemas/formatTypes'
createProductFileRequest:
content:
application/json:
schema:
type: object
additionalProperties: false
description: A sample request to create a file object and retrieve the upload URL to import products to the Catalog Connector.
required:
- type
- name
- locale
- formatType
properties:
type:
$ref: '#/components/schemas/productFileJobTypes'
name:
type: string
description: The name of the file to be imported.
example: bulk_import_123345677788999.csv
locale:
$ref: '#/components/schemas/locale'
formatType:
$ref: '#/components/schemas/formatTypes'
headers:
xFabricRequestId:
schema:
type: string
required: false
example: 263e731c-45c8-11ed-b878-0242ac120002
description: Unique request ID
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.
'