Skip to main content
You can create your own Integration templates and sync data from any external system. In terms of integration, a Fibery Field type is represented as pair of parameters in the integration schema:
  • type
  • subType
Below the list of available combinations.
Fibery field typeIntegration typesubTypeComments
fibery/decimalnumber

It’s possible to apply number optional formatting though field configuration. Formatting is applied only for newly created fields. Formatting can be changed via default Fibery fields UI once field is created.

Money

{
  "id": "amount",
  "name": "Amount",
  "type": "number",
  "format": {
    "format": "Money",
    "currencyCode": "EUR",
    "hasThousandSeparator": true,
    "precision": 2
  }
}

Percent

{
  "id": "percent",
  "name": "Percent",
  "type": "number",
  "format": {
    "format": "Percent",
    "precision": 2
  }
}

Number

{
  "id": "value",
  "name": "Value",
  "type": "number",
  "format": {
    "format": "Number",
    "unit": "ea",
    "hasThousandSeparator": true,
    "precision": 2
  }
}
fibery/integernumberinteger
fibery/texttext

It’s possible to apply text optional formatting though field configuration. Formatting is applied only for newly created fields. Formatting can be changed via default Fibery fields UI once field is created.

Phone

{
  "id": "phone",
  "name": "Phone",
  "type": "text",
  "format": {
    "format": "phone"
  }
}
fibery/urltexturl
fibery/emailtextemail
fibery/booltextboolean

The conversion from text to boolean is as follows:

{
  "true": true,
  "yes": true,
  "on": true,
  "1": true,
  "false": false,
  "no": false,
  "off": false,
  "0": false,
  "checked": true,
  "": false
}
fibery/date-rangetextdate-range

The value is a stringified object with start and end fields.

{
  "start": "2020-01-22",
  "end": "2020-08-19"
}
fibery/date-time-rangetextdate-time-range

The value is a stringified object with start and end fields.

{
  "start": "2020-01-22T01:02:23.977Z",
  "end": "2020-08-18T06:02:23.977Z"
}
Collaboration~Documents/DocumenttexthtmlReplaces content of rich text field converting value from html format.
Collaboration~Documents/DocumenttextmdReplaces content of rich text field converting value from md format.
Icons extensiontexticonCan be used to set Icon of entity. At the moment it works only with Emojis. The value should be either a native emoji (i.e. 👋🏻) or its alias (i.e. :wave::skin-tone-2:).
Single Select Enumtextsingle-select

It’s possible to specify options by adding options field into schema field configuration.

{
  "options": [
    {
      "name": "Open",
      "icon": "laughing",
      "color": "#f2e2f4"
    },
    {
      "name": "In Progress"
    },
    {
      "name": "Closed"
    }
  ]
}

If options property is missing then the integration module will infer the options automatically based on your data.

Workflowtextworkflow

It’s possible to specify options by adding options field into schema field configuration. Options must include record with default: true and final: true records. It could optionally include type: “Not started” | “Started” | “Finished”.

{
  "options": [
    {
      "name": "Open",
      "icon": "laughing",
      "color": "#f2e2f4",
      "default": true
    },
    {
      "name": "In Progress",
      "type": "Started"
    },
    {
      "final": true,
      "name": "Closed"
    }
  ]
}

If options property is missing then the integration module will infer the options automatically based on your data, including start and final options.

Multi Select Enumtext or array[text]multi-select

It’s possible to specify options by adding options field into schema field configuration.

{
  "options": [
    {
      "name": "JS",
      "icon": "laughing",
      "color": "#f2e2f4"
    },
    {
      "name": "Java"
    },
    {
      "name": "Closure"
    }
  ]
}

If options property is missing then the integration module will infer the options automatically based on your data.

Values can be passed differently depending on type value. It can be either a JSON array [“JS”, “Java”] of selected options or a comma-separated string of selected options “JS,Java”.

fibery/date-timedateValue format: 2020-01-22T01:02:23.977Z.
fibery/datedatedayValue format: 2020-08-22.
Filesarray[text] — for multiple files, text — for single filefile

Array of links to files. The integration service will download files from the links and upload them into Fibery. If access to file content requires authentication then the url should be provided in special format via app://resource and connector should implement POST /api/v1/synchronizer/resource endpoint. See here for more info.

By default, files are treated as unique by provided URL. So if file url is changed during next sync then previous file will be deleted and new file will be uploaded. Unfortunately, it’s rather common practice to provide temporary file URL. In this case Fibery will be constantly remove and add the same file during each sync. Luckily, Fibery provides a way to add an unique key for each file. Connector developers may add a special query parameter __file-key into file url. It’s also works with authenticated access by adding the same query parameter (__file-key).

Example: https://myapp/files/temp-file-access-token?__file-key=file-id and on next sync https://myapp/files/temp-file-access-token-2?__file-key=file-id.

Avatar extensiontextavatarLink to file. Integration will download the file from the link and upload it into Fibery.
fibery/locationtextlocation

Location field. Supported values are:

Coordinates

40.123, -74.123
40.123° N 74.123° W
40° 7´ 22.8" N 74° 7´ 22.8" W
40° 7.38’ , -74° 7.38’
N40°7’22.8, W74°7’22.8"
40°7’22.8"N, 74°7’22.8"W
40 7 22.8, -74 7 22.8
40.123 -74.123
40.123°,-74.123°
144442800, -266842800
40.123N74.123W
4007.38N7407.38W
40°7’22.8"N, 74°7’22.8"W
400722.8N740722.8W
N 40 7.38 W 74 7.38
40:7:23N,74:7:23W
40:7:22.8N 74:7:22.8W
40°7’23"N 74°7’23"W
40°7’23" -74°7’23"
40d 7’ 23" N 74d 7’ 23" W
40.123N 74.123W
40° 7.38, -74° 7.38

Stringified JSON

{
  "longitude": "52.2297",
  "latitude": "21.0122",
  "fullAddress": "Warsaw, Poland"
}

Special cases

Title field

By default, the integration will use the Field with id name as the title field (equivalent to the Name Field in standard databases) but it is possible to override this by adding the subType: title annotation.
{
  "commitName": {
    "type": "text",
    "name": "Commit Name",
    "subType": "title"
  }
}

People relations

{
  "project": {
    "id": {
      "name": "Id",
      "type": "id"
    },
    "owner": {
      "name": "Owner",
      "type": "text",
      "relation": {
        "kind": "native",
        "targetType": "fibery/user",
        "cardinality": "many-to-one",
        "targetName": "My Projects",
        "targetFieldId": "user/email"
      }
    },
    "assignees": {
      "name": "Assignees",
      "type": "array[text]",
      "relation": {
        "kind": "native",
        "targetType": "fibery/user",
        "cardinality": "many-to-many",
        "targetName": "Assigned To",
        "targetFieldId": "user/email"
      }
    }
  }
}
targetFieldId possible values:
  • user/email - finds users by email address (case sensitive)
  • in all other case will use Name field to find a user

Integration relations

Let’s assume that there are two types: Branch and Project. So Project includes many Branches. It can be configured in the following way
{
  "project": {
    "id": {
      "name": "Id",
      "type": "id"
    }
    // other fields
  },
  "branch": {
    "id": {
      "name": "Id",
      "type": "id"
    },
    "projectId": {
      "name": "Project Id",
      "type": "text",
      "relation": {
        "cardinality": "many-to-one",
        "name": "Project",
        "targetType": "project",
        "targetFieldId": "id",
        "targetName": "Branches"
      }
    }
    // other fields
  }
}
In this case, the integration will create following fields:
  • Project Id field with text type in the Branch type. This field is hidden field and used for auto-linking relations.
  • Project field in Branch type. It’s a relation field to the Project type.
  • Branches collection field in the Project type. It’s another side of ProjectBranch relation.
Possible cardinalities:
  • many-to-one
  • many-to-many
  • one-to-one