Factern Resource Identifiers

Factern Resource Identifiers, or FRIs, are unique identifiers that can be used to reference a Factern resource.

FRN

Some node types are named and can be referenced by a Factern Resource Name identifier (FRN) of the form frn:factType:ownerLoginId:name.

FRN identifiers are currently supported for Fields, Groups, Templates, Scopes, LabelLists, Interfaces, and Applications.

It is also possible to omit the ownerLoginId if the requestor is also the node owner.

Fact Type FRI Name Example
Field field frn:field::FullName
Group group frn:group::AdminLogins
Template template frn:template::ProfileData
Scope scope frn:scope::AccessibleData
LabelList labellist frn:labellist::ConfirmationStatus
Application application frn:application::PayrollApplication
Interface interface frn:interface::BulkStorageInterface

Example

In this example, we create a field and then describe it using its FRI. Our loginId is 00000000F5CB5E7245AAB0860E7C08F6F0EA8DD80FF7F649.

POST /createfield {
    "name": "SalesLeads",
    ...
}

Response

{
    ...
    "nodeId": "000000008029289F643854A1FE32F2EB69DEDFDD54B40EA9",
    ...
}
POST /describe {
    ...
    "nodeId": "frn:field:00000000F5CB5E7245AAB0860E7C08F6F0EA8DD80FF7F649:SalesLeads",
    ...
}

Response

{
    ...
    "nodeId": "00000000CE5945571ED67F0A34D25FEFC54F0E66416A2DF7",
    ...
}

Example

The loginId can be omitted if the requestor is also the node owner.

POST /describe {
    ...
    "nodeId": "frn:field::SalesLeads",
    ...
}

Response

{
    ...
    "nodeId": "00000000CE5945571ED67F0A34D25FEFC54F0E66416A2DF7",
    ...
}

SHORT FRN

It is also possible to omit the node type and loginId if they can be inferred from the context of the request. Then the FRI can be specified in the form :name.

Example

In this example, we create a template and a scope. The short FRI is used to reference the template when creating the scope.

POST /createtemplate {
    ...
    "name": "PersonProfile",
    ...
}

Now we create the scope using the template's short FRI.

POST /createscope {
    "name": "ProfileAndLoginScope",
    "templateIds": [
        "PersonProfile",
        ...
    ]
}