Create and Update attribute mappings - Fabric

Create and Update attribute mappings

cURL

curl --request POST \
  --url https://live.copilot.fabric.inc/api-product/v1/product/attribute/mapping \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'x-site-context: <x-site-context>' \
  --data '\n{\n  "mappings": [\
    {\
      "attributeId": "ATTR1234",\
      "mapping": "SKU",\
      "name": "<string>",\
      "description": "Item SKU",\
      "validation": {\
        "required": true,\
        "inheritable": true,\
        "inverse": false,\
        "unique": true,\
        "exact": "<string>",\
        "attributeTypes": [],\
        "contains": "<string>",\
        "range": {\
          "min": "<string>",\
          "max": "<string>"\
        },\
        "formula": "value < 10 || value > 20",\
        "oneOf": [\
          "<string>"\
        ]\
      },\
      "required": true\
    }\
  ]\
} '\n```

### Example Code Snippets

#### Python

import requests

url = "https://live.copilot.fabric.inc/api-product/v1/product/attribute/mapping"

payload = { "mappings": [
{
"attributeId": "ATTR1234",
"mapping": "SKU",
"name": "",
"description": "Item SKU",
"validation": {
"required": True,
"inheritable": True,
"inverse": False,
"unique": True,
"exact": "",
"attributeTypes": [],
"contains": "",
"range": {
"min": "",
"max": ""
},
"formula": "value < 10 || value > 20",
"oneOf": [""]
},
"required": True
}
] } headers = {
"x-site-context": "",
"Authorization": "Bearer ",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)


#### JavaScript (Fetch API)

const options = {
method: 'POST',
headers: {
'x-site-context': '',
Authorization: 'Bearer ',
'Content-Type': 'application/json'
},
body: JSON.stringify({
mappings: [
{
attributeId: 'ATTR1234',
mapping: 'SKU',
name: '',
description: 'Item SKU',
validation: {
required: true,
inheritable: true,
inverse: false,
unique: true,
exact: '',
attributeTypes: [],
contains: '',
range: {min: '', max: ''},
formula: 'value < 10 || value > 20',
oneOf: ['']
},
required: true
}
]
})
};

fetch('https://live.copilot.fabric.inc/api-product/v1/product/attribute/mapping', options) .then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));


#### PHP

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://live.copilot.fabric.inc/api-product/v1/product/attribute/mapping",\ CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'mappings' => [
[
'attributeId' => 'ATTR1234',
'mapping' => 'SKU',
'name' => '',
'description' => 'Item SKU',
'validation' => [
'required' => true,
'inheritable' => true,
'inverse' => false,
'unique' => true,
'exact' => '',
'attributeTypes' => [],
'contains' => '',
'range' => [
'min' => '',
'max' => ''
],
'formula' => 'value < 10 || value > 20',
'oneOf' => ['']
],
'required' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer ",
"Content-Type: application/json",
"x-site-context: "
],
]);

$response = curl_exec($curl); $err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}


#### Go

package main

import ( "fmt" "strings" "net/http" "io" )

func main() {

url := "https://live.copilot.fabric.inc/api-product/v1/product/attribute/mapping"

payload := strings.NewReader("{\n "mappings": [\n {\n "attributeId": "ATTR1234",\n "mapping": "SKU",\n "name": "",\n "description": "Item SKU",\n "validation": {\n "required": true,\n "inheritable": true,\n "inverse": false,\n "unique": true,\n "exact": "",\n "attributeTypes": [],\n "contains": "",\n "range": {\n "min": "",\n "max": ""\n },\n "formula": "value < 10 || value > 20",\n "oneOf": [\n ""\n ]\n },\n "required": true\n }\n ]}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("x-site-context", "") req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close() body, _ := io.ReadAll(res.Body)

fmt.Println(string(body)) }


### Responses

#### Successful Response

{ "attributeId": "62e2ae29c3004a000950ad5f", "attribute": { "id": "", "statuses": [
{
"code": "",
"name": "",
"description": "",
"createdOn": "2023-11-07T05:31:56Z", "createdBy": "broma0", "modifiedOn": "2023-11-07T05:31:56Z", "modifiedBy": "broma0" }
], "files": [
{
"name": "",
"statuses": [
{
"code": "",
"name": "",
"description": "",
"createdOn": "2023-11-07T05:31:56Z", "createdBy": "broma0", "modifiedOn": "2023-11-07T05:31:56Z", "modifiedBy": "broma0" }
], "progress": 100, "createdOn": "2023-11-07T05:31:56Z", "createdBy": "broma0", "modifiedOn": "2023-11-07T05:31:56Z", "modifiedBy": "broma0", "secondsTakenToImport": 123, "secondsTakenToProcess": 123 }
], "name": "", "description": "", "locales": [
{
"locale": "fr-ca", "name": "Un Nom Français" }
], "localizable": true, "mapping": "", "serialStart": 123, "format": "YYYY-MM-DD", "formula": "value < 10 || value > 20", "validation": { "required": true, "inheritable": true, "inverse": false, "unique": true, "exact": "", "attributeTypes": [], "contains": "", "range": { "min": "", "max": "" }, "formula": "value < 10 || value > 20", "oneOf": [
""
] }, "createdOn": "2023-11-07T05:31:56Z", "createdBy": "broma0", "modifiedOn": "2023-11-07T05:31:56Z", "modifiedBy": "broma0" }, "mapping": "SKU", "target": "ITEM", "name": "Item SKU", "description": "Item SKU", "required": true, "validation": { "required": true, "inheritable": true, "inverse": false, "unique": true, "exact": "", "attributeTypes": [], "contains": "", "range": { "min": "", "max": "" }, "formula": "value < 10 || value > 20", "oneOf": [
""
] }, "createdOn": "2021-09-23T17:47:04.231Z", "createdBy": "broma0", "modifiedOn": "2023-11-07T05:31:56Z", "modifiedBy": "broma0" }


#### Client Error

{ "code": 400, "message": "Client error" }


#### Server Error

{ "code": 500, "message": "An internal error occurred. If the issue persists please contact support@fabric.inc." }


### Authorizations

**Authorization**: S2S access token (JWT) from fabric Identity service (during Login)

### Headers

**x-site-context**: Required. A JSON object containing source information (account, channel, stage, date) for data scope.

### Body

**mappings**: Array of mapping objects.