A library is a collection of tag resources (extensions, rules, and data elements) that represent the desired behavior of a property. The /libraries
endpoint in the Reactor API allows you to programmatically manage libraries within your tag properties.
A library belongs to exactly one property. A property can have many libraries.
The endpoint used in this guide is part of the Reactor API. Before continuing, please review the getting started guide for important information regarding how to authenticate to the API.
Before working with libraries in the Reactor API, it is important to understand the roles that library state and environments play in determining what actions you can make on a particular library. See the guide on the library publishing flow for more information.
You can retrieve a list of libraries for a property by including the property’s ID in the path of a GET request.
API format
GET /properties/{PROPERTY_ID}/libraries
Parameter | Description |
---|---|
PROPERTY_ID |
The id of the property that owns the libraries. |
Using query parameters, listed libraries can be filtered based on the following attributes:
created_at
name
published_at
stale
state
updated_at
Request
curl -X GET \
https://reactor.adobe.io/properties/PR4bc17fb09ed845b1acfb0f6600a1f3c0/libraries \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H "Content-Type: application/vnd.api+json" \
-H 'Accept: application/vnd.api+json;revision=1'
Response
A successful response returns a list of libraries for the specified property.
{
"data": [
{
"id": "LBb174d60bdbd34f87a2e9466fadaacae0",
"type": "libraries",
"attributes": {
"created_at": "2020-12-14T17:44:10.776Z",
"name": "My Library",
"published_at": null,
"state": "development",
"updated_at": "2020-12-14T17:44:10.776Z",
"build_required": true
},
"relationships": {
"builds": {
"links": {
"related": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0/builds"
}
},
"environment": {
"links": {
"self": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0/relationships/environment"
},
"data": null
},
"data_elements": {
"links": {
"related": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0/data_elements",
"self": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0/relationships/data_elements"
}
},
"extensions": {
"links": {
"related": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0/extensions",
"self": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0/relationships/extensions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0/notes"
}
},
"rules": {
"links": {
"related": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0/rules",
"self": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0/relationships/rules"
}
},
"upstream_library": {
"data": null
},
"property": {
"links": {
"related": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0/property"
},
"data": {
"id": "PR4bc17fb09ed845b1acfb0f6600a1f3c0",
"type": "properties"
}
},
"last_build": {
"links": {
"related": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0/last_build"
},
"data": null
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PR4bc17fb09ed845b1acfb0f6600a1f3c0",
"self": "https://reactor.adobe.io/libraries/LBb174d60bdbd34f87a2e9466fadaacae0"
},
"meta": {
"build_status": null,
"build_required_detail": "No build found since last state change"
}
}
],
"meta": {
"pagination": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1
}
}
}
You can look up a library by providing its ID in the path of a GET request.
API format
GET /libraries/{LIBRARY_ID}
Parameter | Description |
---|---|
LIBRARY_ID |
The id of the library that you want to look up. |
Request
curl -X GET \
https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84 \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H "Content-Type: application/vnd.api+json" \
-H 'Accept: application/vnd.api+json;revision=1'
Response
A successful response returns the details of the library.
{
"data": {
"id": "LB5862ee2dc21b4646a5536c8d6edb0c84",
"type": "libraries",
"attributes": {
"created_at": "2020-12-14T17:44:00.476Z",
"name": "My Library",
"published_at": null,
"state": "development",
"updated_at": "2020-12-14T17:44:00.476Z",
"build_required": true
},
"relationships": {
"builds": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/builds"
}
},
"environment": {
"links": {
"self": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/relationships/environment"
},
"data": null
},
"data_elements": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/data_elements",
"self": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/relationships/data_elements"
}
},
"extensions": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/extensions",
"self": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/relationships/extensions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/notes"
}
},
"rules": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/rules",
"self": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/relationships/rules"
}
},
"upstream_library": {
"data": null
},
"property": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/property"
},
"data": {
"id": "PRc90084c615844db58201d4e70d47b8bf",
"type": "properties"
}
},
"last_build": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/last_build"
},
"data": null
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PRc90084c615844db58201d4e70d47b8bf",
"self": "https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84"
},
"meta": {
"build_status": null,
"build_required_detail": "No build found since last state change"
}
}
}
You can create a new library by making a POST request.
API format
POST /properties/{PROPERTY_ID}/libraries
Parameter | Description |
---|---|
PROPERTY_ID |
The id of the property that you are defining the library under. |
Request
The following request creates a new library for the specified property. When first creating a library, only its name
attribute can be configured. In order to add data elements, extensions, and rules to the library, you must create relationships. See the section on managing library resources for more information.
curl -X POST \
https://reactor.adobe.io/properties/PR97d92a379a5f48758947cdf44f607a0d/libraries \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"attributes": {
"name": "My Library"
},
"type": "libraries"
}
}'
Property | Description |
---|---|
attributes.name |
(Required) A human-readable name for the library. |
type |
The type of resource being updated. For this endpoint, the value must be libraries . |
Response
A successful response return the details of the newly created library.
{
"data": {
"id": "DE8667bc64ceba4b599e8458ea4ab58b8f",
"type": "libraries",
"attributes": {
"created_at": "2020-12-14T17:33:21.774Z",
"deleted_at": null,
"dirty": true,
"enabled": true,
"name": "My library 2020-12-14 17:33:21 +0000",
"published": false,
"published_at": null,
"revision_number": 0,
"updated_at": "2020-12-14T17:33:21.774Z",
"clean_text": false,
"default_value": null,
"delegate_descriptor_id": "kessel-test::dataElements::dom-attribute",
"force_lower_case": false,
"review_status": "unsubmitted",
"storage_duration": null,
"settings": "{\"elementSelector\":\".target-element\",\"elementProperty\":\"html\"}"
},
"relationships": {
"libraries": {
"links": {
"related": "https://reactor.adobe.io/libraries/DE8667bc64ceba4b599e8458ea4ab58b8f/libraries"
}
},
"revisions": {
"links": {
"related": "https://reactor.adobe.io/libraries/DE8667bc64ceba4b599e8458ea4ab58b8f/revisions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/libraries/DE8667bc64ceba4b599e8458ea4ab58b8f/notes"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/libraries/DE8667bc64ceba4b599e8458ea4ab58b8f/property"
},
"data": {
"id": "PR05ad70a8078f44c1a229ecf0da2802f2",
"type": "properties"
}
},
"origin": {
"links": {
"related": "https://reactor.adobe.io/libraries/DE8667bc64ceba4b599e8458ea4ab58b8f/origin"
},
"data": {
"id": "DE8667bc64ceba4b599e8458ea4ab58b8f",
"type": "libraries"
}
},
"extension": {
"links": {
"related": "https://reactor.adobe.io/libraries/DE8667bc64ceba4b599e8458ea4ab58b8f/extension"
},
"data": {
"id": "EX28788723a8e24a2f927fce1b55eb7ffc",
"type": "extensions"
}
},
"updated_with_extension_package": {
"links": {
"related": "https://reactor.adobe.io/libraries/DE8667bc64ceba4b599e8458ea4ab58b8f/updated_with_extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
},
"updated_with_extension": {
"links": {
"related": "https://reactor.adobe.io/libraries/DE8667bc64ceba4b599e8458ea4ab58b8f/updated_with_extension"
},
"data": {
"id": "EXd6bf04b143e64fe0ae7efe55a6655fa9",
"type": "extensions"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PR05ad70a8078f44c1a229ecf0da2802f2",
"origin": "https://reactor.adobe.io/libraries/DE8667bc64ceba4b599e8458ea4ab58b8f",
"self": "https://reactor.adobe.io/libraries/DE8667bc64ceba4b599e8458ea4ab58b8f",
"extension": "https://reactor.adobe.io/extensions/EX28788723a8e24a2f927fce1b55eb7ffc"
},
"meta": {
"latest_revision_number": 0
}
}
}
The data elements, extensions, rules, and environment that are associated with a library are established through relationships. The sections below cover how to manage these relationships through API calls.
You can add resources to a library by appending /relationships
to the path of a POST request, followed by the resource type.
API format
POST /libraries/{LIBRARY_ID}/relationships/{RESOURCE_TYPE}
Parameter | Description |
---|---|
{LIBRARY_ID} |
The ID of the library that you want to add resources to. |
{RESOURCE_TYPE} |
The type of resource that you are adding to the library. The following values are accepted:
|
Request
The following request adds two data elements to a library.
curl -X POST \
https://reactor.adobe.io/libraries/LBdd2f55e9c3bb4ce0a582a0b0c586a6f5/relationships/data_elements \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'Accept: application/vnd.api+json;revision=1' \
-H 'Content-Type: application/json' \
-d '{
"data": [
{
"id": "DEce7fdee2afe44efeb4d974247d1e8dbe",
"type": "data_elements"
},
{
"id": "DE8097636264104451ac3a18c95d5ff833",
"type": "data_elements"
}
]
}'
Property | Description |
---|---|
id |
The ID of the resource that you are adding to the library. |
type |
The type of resource that you are adding to the library. |
Response
A successful response returns the details of the added relationships. Performing a lookup request for the library shows the added relationships under the relationships
property.
{
"data": [
{
"type": "data_elements",
"id": "DEce7fdee2afe44efeb4d974247d1e8dbe"
},
{
"id": "DE8097636264104451ac3a18c95d5ff833",
"type": "data_elements"
}
],
"links": {
"related": "https://reactor.adobe.io/libraries/LB09eca17e012842b49466506f419283a7/data_elements",
"self": "https://reactor.adobe.io/libraries/LB09eca17e012842b49466506f419283a7/relationships/data_elements"
}
}
You can replace all existing resources of a certain type for a library by appending /relationships
to the path of a PATCH request, followed by the resource type that you are replacing.
API format
PATCH /libraries/{LIBRARY_ID}/relationships/{RESOURCE_TYPE}
Parameter | Description |
---|---|
{LIBRARY_ID} |
The ID of the library whose relationships you want to replace. |
{RESOURCE_TYPE} |
The type of resource that you are replacing. The following values are accepted:
|
Request
The following request replaces the extensions for a library with those provided in the data
array.
curl -X PATCH \
https://reactor.adobe.io/libraries/LBdd2f55e9c3bb4ce0a582a0b0c586a6f5/relationships/environment \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'Accept: application/vnd.api+json;revision=1' \
-H 'Content-Type: application/json' \
-d '{
"data": [
{
"id": "EX58312732fd0f43f98037d765ef96c4cd",
"type": "extensions"
}
]
}'
Property | Description |
---|---|
id |
The ID of the resource that you are adding to the library. |
type |
The type of resource that you are adding to the library. |
Response
A successful response returns the details of the updated relationships. Performing a lookup request for the library shows the relationships under the relationships
property.
{
"data": [
{
"type": "extensions",
"id": "EX58312732fd0f43f98037d765ef96c4cd"
}
],
"links": {
"related": "https://reactor.adobe.io/libraries/LBdbc7c49ac8f040bc9576db26b127444d/extensions",
"self": "https://reactor.adobe.io/libraries/LBdbc7c49ac8f040bc9576db26b127444d/relationships/extensions"
}
}
You can remove existing resources from a library by appending /relationships
to the path of a DELETE request, followed by the resource type that you are removing.
API format
DELETE /libraries/{LIBRARY_ID}/relationships/{RESOURCE_TYPE}
Parameter | Description |
---|---|
{LIBRARY_ID} |
The ID of the library whose resources you want to remove. |
{RESOURCE_TYPE} |
The type of resource that you are removing. The following values are accepted:
|
Request
The following request removes a rule from a library. Any existing rules that are not included in the data
array are not deleted.
curl -X DELETE \
https://reactor.adobe.io/libraries/LBdd2f55e9c3bb4ce0a582a0b0c586a6f5/relationships/environment \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'Accept: application/vnd.api+json;revision=1' \
-H 'Content-Type: application/json' \
-d '{
"data": [
{
"id": "RLa16f7859c7404239940c2cf2ec02b03c",
"type": "rules"
}
]
}'
Property | Description |
---|---|
id |
The ID of the resource that you are removing from the library. |
type |
The type of resource that you are removing from the library. |
Response
A successful response returns the details of the updated relationships for the resource type. If no relationships exist for this resource type, the data
property is returned as an empty array. Performing a lookup request for the library shows the relationships under the relationships
property.
{
"data": [
],
"links": {
"related": "https://reactor.adobe.io/libraries/LBbde5759742844fe59458ca0c988ecd61/rules",
"self": "https://reactor.adobe.io/libraries/LBbde5759742844fe59458ca0c988ecd61/relationships/rules"
}
}
You can assign a library to an environment /relationships/environment
to the path of a POST request.
API format
POST /libraries/{LIBRARY_ID}/relationships/environment
Parameter | Description |
---|---|
{LIBRARY_ID} |
The ID of the library that you want to assign. |
Request
curl -X POST \
https://reactor.adobe.io/libraries/LBdd2f55e9c3bb4ce0a582a0b0c586a6f5/relationships/environment \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'Accept: application/vnd.api+json;revision=1' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"id": "EN867c480dc5ea4158be3ea68e5543bd85",
"type": "environments"
}
}'
Property | Description |
---|---|
id |
The ID of the environment that you assign the library to. |
type |
Must be set to environments . |
Response
A successful response returns the details of the relationship. Performing a lookup request for the library shows the added relationship under the relationships
property.
{
"data": {
"id": "EN867c480dc5ea4158be3ea68e5543bd85",
"type": "environments"
},
"links": {
"related": "https://reactor.adobe.io/libraries/LBdd2f55e9c3bb4ce0a582a0b0c586a6f5/environment",
"self": "https://reactor.adobe.io/libraries/LBdd2f55e9c3bb4ce0a582a0b0c586a6f5/relationships/environment"
}
}
You can transition a library to a different publishing state by including its ID in the path of a PATCH request and supplying an appropriate meta.action
value in the payload.
API format
PATCH /libraries/{LIBRARY_ID}
Parameter | Description |
---|---|
LIBRARY_ID |
The id of the library that you want to transition. |
Request
The following request transitions the state of an existing library, based on the value of meta.action
provided in the payload. The available actions for a library depend on its current publishing state, as outlined in the publishing flow.
curl -X PATCH \
https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84 \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"id": "LB80c337c956804738b2db2ea2f69fcdf0",
"type": "libraries",
"meta": {
"action": "submit"
}
}
}'
Property | Description |
---|---|
meta.action |
The specific transition action that you want to make on the library. The following actions are available, depending on the library’s current publishing state:
|
id |
The id of the library you want to update. This should match the {LIBRARY_ID} value provided in the request path. |
type |
The type of resource being updated. For this endpoint, the value must be libraries . |
Response
A successful response returns the details of the updated library.
{
"data": {
"id": "LB80c337c956804738b2db2ea2f69fcdf0",
"type": "libraries",
"attributes": {
"created_at": "2020-12-14T17:47:57.783Z",
"name": "My Library",
"published_at": null,
"state": "submitted",
"updated_at": "2020-12-14T17:48:06.431Z",
"build_required": true
},
"relationships": {
"builds": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/builds"
}
},
"environment": {
"links": {
"self": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/relationships/environment"
},
"data": null
},
"data_elements": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/data_elements",
"self": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/relationships/data_elements"
}
},
"extensions": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/extensions",
"self": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/relationships/extensions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/notes"
}
},
"rules": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/rules",
"self": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/relationships/rules"
}
},
"upstream_library": {
"data": null
},
"property": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/property"
},
"data": {
"id": "PRbc84c93c1c9f48c9836ade5ea4199006",
"type": "properties"
}
},
"last_build": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/last_build"
},
"data": {
"id": "BL8d6e931f2f6d48ea96d6730122f13bcc",
"type": "builds"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PRbc84c93c1c9f48c9836ade5ea4199006",
"self": "https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0"
},
"meta": {
"build_status": null,
"build_required_detail": "No build found since last state change"
}
}
}
Only approved libraries may be published to production.
To publish a library to production, ensure that a production environment has been added to the library, then create a build.
API format
POST /libraries/{LIBRARY_ID}/builds
Parameter | Description |
---|---|
LIBRARY_ID |
The id of the library that you want to publish. |
Request
This request does not require a payload.
curl -X POST \
https://reactor.adobe.io/libraries/LB80c337c956804738b2db2ea2f69fcdf0/builds \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H 'Content-Type: application/json'
Response
{
"data": {
"id": "BL162b63703eb74c6bb3c12471e0062c05",
"type": "builds",
"attributes": {
"created_at": "2020-12-14T17:48:18.731Z",
"status": "pending",
"updated_at": "2020-12-14T17:48:18.731Z",
"token": "b223fc55df1c"
},
"relationships": {
"data_elements": {
"links": {
"related": "https://reactor.adobe.io/builds/BL162b63703eb74c6bb3c12471e0062c05/data_elements"
}
},
"extensions": {
"links": {
"related": "https://reactor.adobe.io/builds/BL162b63703eb74c6bb3c12471e0062c05/extensions"
}
},
"rules": {
"links": {
"related": "https://reactor.adobe.io/builds/BL162b63703eb74c6bb3c12471e0062c05/rules"
}
},
"environment": {
"links": {
"related": "https://reactor.adobe.io/builds/BL162b63703eb74c6bb3c12471e0062c05/environment"
},
"data": {
"id": "EN5428335fff304c749f06a241db137a60",
"type": "environments"
}
},
"library": {
"links": {
"related": "https://reactor.adobe.io/builds/BL162b63703eb74c6bb3c12471e0062c05/library"
},
"data": {
"id": "LBa937e62887e94d85b77cbe703f5dfc56",
"type": "libraries"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/builds/BL162b63703eb74c6bb3c12471e0062c05/property"
},
"data": {
"id": "PR7e2b7aaaffcb499398010ba964603415",
"type": "properties"
}
}
},
"links": {
"environment": "https://reactor.adobe.io/environments/EN5428335fff304c749f06a241db137a60",
"library": "https://reactor.adobe.io/libraries/LBa937e62887e94d85b77cbe703f5dfc56",
"self": "https://reactor.adobe.io/builds/BL162b63703eb74c6bb3c12471e0062c05"
},
"meta": {
"artifact_url": "https://assets.adobedtm.com/staging/f9fd106ab399/8b659dd115cf/launch-5986a1b644a4-development.min.js",
"direct_artifact_url": "https://assets.adobedtm.com/staging/f9fd106ab399/8b659dd115cf/b223fc55df1c/launch-5986a1b644a4-development.min.js",
"archive": false,
"host_type_of": "akamai"
}
}
}
Libraries are “notable” resources, meaning you can create and retrieve text-based notes on each individual resource. See the notes endpoint guide for more information on how to manage notes for libraries and other compatible resources.
The following calls demonstrate how to retrieve the related resources for a library. When looking up a library, these relationships are listed under the relationships
property.
See the relationships guide for more information on relationships in the Reactor API.
You can list the data elements that a library utilizes by appending /data_elements
to the path of a lookup request.
API format
GET /libraries/{LIBRARY_ID}/data_elements
Parameter | Description |
---|---|
{LIBRARY_ID} |
The id of the library whose data elements you want to list. |
Request
curl -X GET \
https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/data_elements \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H "Content-Type: application/vnd.api+json" \
-H 'Accept: application/vnd.api+json;revision=1'
Response
A successful response returns a list of data elements that use the specified library.
{
"data": [
{
"id": "DE4956628e8baa4b358cc592337049b37b",
"type": "data_elements",
"attributes": {
"created_at": "2020-12-14T17:45:11.694Z",
"deleted_at": null,
"dirty": false,
"enabled": true,
"name": "My Data Element 2020-12-14 17:45:10 +0000",
"published": false,
"published_at": null,
"revision_number": 1,
"updated_at": "2020-12-14T17:45:11.694Z",
"clean_text": false,
"default_value": null,
"delegate_descriptor_id": "kessel-test::dataElements::dom-attribute",
"force_lower_case": false,
"review_status": "unsubmitted",
"storage_duration": null,
"settings": "{\"elementProperty\":\"html\",\"elementSelector\":\".target-element\"}"
},
"relationships": {
"libraries": {
"links": {
"related": "https://reactor.adobe.io/data_elements/DE4956628e8baa4b358cc592337049b37b/libraries"
}
},
"revisions": {
"links": {
"related": "https://reactor.adobe.io/data_elements/DE4956628e8baa4b358cc592337049b37b/revisions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/data_elements/DE4956628e8baa4b358cc592337049b37b/notes"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/data_elements/DE4956628e8baa4b358cc592337049b37b/property"
},
"data": {
"id": "PR245ca5e560784249b2a88ef82f2851b6",
"type": "properties"
}
},
"origin": {
"links": {
"related": "https://reactor.adobe.io/data_elements/DE4956628e8baa4b358cc592337049b37b/origin"
},
"data": {
"id": "DE4c027939f2004fdcb15e3b4099e70974",
"type": "data_elements"
}
},
"extension": {
"links": {
"related": "https://reactor.adobe.io/data_elements/DE4956628e8baa4b358cc592337049b37b/extension"
},
"data": {
"id": "EX5942ffd7fac94428875bd664e397bd47",
"type": "extensions"
}
},
"updated_with_extension_package": {
"links": {
"related": "https://reactor.adobe.io/data_elements/DE4956628e8baa4b358cc592337049b37b/updated_with_extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
},
"updated_with_extension": {
"links": {
"related": "https://reactor.adobe.io/data_elements/DE4956628e8baa4b358cc592337049b37b/updated_with_extension"
},
"data": {
"id": "EXbf411638b90843c486254b5ca0fe47d6",
"type": "extensions"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PR245ca5e560784249b2a88ef82f2851b6",
"origin": "https://reactor.adobe.io/data_elements/DE4c027939f2004fdcb15e3b4099e70974",
"self": "https://reactor.adobe.io/data_elements/DE4956628e8baa4b358cc592337049b37b",
"extension": "https://reactor.adobe.io/extensions/EX5942ffd7fac94428875bd664e397bd47"
},
"meta": {
"latest_revision_number": 1
}
}
],
"meta": {
"pagination": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1
}
}
}
You can list the extensions that a library utilizes by appending /extensions
to the path of a lookup request.
API format
GET /libraries/{LIBRARY_ID}/extensions
Parameter | Description |
---|---|
{LIBRARY_ID} |
The id of the library whose extensions you want to list. |
Request
curl -X GET \
https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/extensions \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H "Content-Type: application/vnd.api+json" \
-H 'Accept: application/vnd.api+json;revision=1'
Response
A successful response returns a list of extensions that use the specified library.
{
"data": [
{
"id": "EXac1e55883e5b47eb9a3589b311960677",
"type": "extensions",
"attributes": {
"created_at": "2020-12-14T17:45:23.759Z",
"deleted_at": null,
"dirty": false,
"enabled": true,
"name": "kessel-test",
"published": false,
"published_at": null,
"revision_number": 1,
"updated_at": "2020-12-14T17:45:23.759Z",
"delegate_descriptor_id": null,
"display_name": "Kessel Test",
"review_status": "unsubmitted",
"version": "1.2.0",
"settings": "{}"
},
"relationships": {
"libraries": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXac1e55883e5b47eb9a3589b311960677/libraries"
}
},
"revisions": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXac1e55883e5b47eb9a3589b311960677/revisions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXac1e55883e5b47eb9a3589b311960677/notes"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXac1e55883e5b47eb9a3589b311960677/property"
},
"data": {
"id": "PR2d1f3ba867204dc7a4c17614d23bbab0",
"type": "properties"
}
},
"origin": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXac1e55883e5b47eb9a3589b311960677/origin"
},
"data": {
"id": "EX63cf3b91ec8146889759bbacb15627c3",
"type": "extensions"
}
},
"updated_with_extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXac1e55883e5b47eb9a3589b311960677/updated_with_extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
},
"extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXac1e55883e5b47eb9a3589b311960677/extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PR2d1f3ba867204dc7a4c17614d23bbab0",
"origin": "https://reactor.adobe.io/extensions/EX63cf3b91ec8146889759bbacb15627c3",
"self": "https://reactor.adobe.io/extensions/EXac1e55883e5b47eb9a3589b311960677",
"extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a",
"latest_extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a"
},
"meta": {
"latest_revision_number": 1
}
}
],
"meta": {
"pagination": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1
}
}
}
You can list the rules that a library utilizes by appending /rules
to the path of a lookup request.
API format
GET /libraries/{LIBRARY_ID}/rules
Parameter | Description |
---|---|
{LIBRARY_ID} |
The id of the library whose rules you want to list. |
Request
curl -X GET \
https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/rules \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H "Content-Type: application/vnd.api+json" \
-H 'Accept: application/vnd.api+json;revision=1'
Response
A successful response returns a list of rules that use the specified library.
{
"data": [
{
"id": "RL460e550125054fffb824cce56c8cb1ac",
"type": "rules",
"attributes": {
"created_at": "2020-12-14T17:45:36.405Z",
"deleted_at": null,
"dirty": false,
"enabled": true,
"name": "Example Rule",
"published": false,
"published_at": null,
"revision_number": 1,
"updated_at": "2020-12-14T17:45:36.405Z",
"review_status": "unsubmitted"
},
"relationships": {
"libraries": {
"links": {
"related": "https://reactor.adobe.io/rules/RL460e550125054fffb824cce56c8cb1ac/libraries"
}
},
"revisions": {
"links": {
"related": "https://reactor.adobe.io/rules/RL460e550125054fffb824cce56c8cb1ac/revisions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/rules/RL460e550125054fffb824cce56c8cb1ac/notes"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/rules/RL460e550125054fffb824cce56c8cb1ac/property"
},
"data": {
"id": "PRa68d0d2c6e0a4ae380fb30f17f7c435d",
"type": "properties"
}
},
"origin": {
"links": {
"related": "https://reactor.adobe.io/rules/RL460e550125054fffb824cce56c8cb1ac/origin"
},
"data": {
"id": "RL04911614524d463a9c115bea442bce72",
"type": "rules"
}
},
"rule_components": {
"links": {
"related": "https://reactor.adobe.io/rules/RL460e550125054fffb824cce56c8cb1ac/rule_components"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PRa68d0d2c6e0a4ae380fb30f17f7c435d",
"origin": "https://reactor.adobe.io/rules/RL04911614524d463a9c115bea442bce72",
"self": "https://reactor.adobe.io/rules/RL460e550125054fffb824cce56c8cb1ac",
"rule_components": "https://reactor.adobe.io/rules/RL460e550125054fffb824cce56c8cb1ac/rule_components"
},
"meta": {
"latest_revision_number": 1
}
}
],
"meta": {
"pagination": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1
}
}
}
You can look up the environment that a library is assigned to by appending /environment
to the path of a GET request.
API format
GET /libraries/{LIBRARY_ID}/environment
Parameter | Description |
---|---|
{LIBRARY_ID} |
The id of the library whose environment you want to look up. |
Request
curl -X GET \
https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/environment \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H "Content-Type: application/vnd.api+json" \
-H 'Accept: application/vnd.api+json;revision=1'
Response
A successful response returns the details of the environment that the specified library is assigned to.
{
"data": {
"id": "ENe66122e6793641d8a8453f63c42e4270",
"type": "environments",
"attributes": {
"archive": false,
"created_at": "2020-12-14T17:39:12.484Z",
"library_path": "f9fd106ab399/2df53b69e8a2",
"library_name": "launch-1d2ffee7eef5-development.min.js",
"library_entry_points": [
{
"library_name": "launch-1d2ffee7eef5-development.min.js",
"minified": true,
"references": [
"f9fd106ab399/2df53b69e8a2/launch-1d2ffee7eef5-development.min.js"
],
"license_path": "f9fd106ab399/2df53b69e8a2/launch-1d2ffee7eef5-development.js"
},
{
"library_name": "launch-1d2ffee7eef5-development.js",
"minified": false,
"references": [
"f9fd106ab399/2df53b69e8a2/launch-1d2ffee7eef5-development.js"
]
}
],
"name": "Development Environment A",
"path": "https://assets.adobedtm.com/staging",
"stage": "development",
"updated_at": "2020-12-14T17:39:13.988Z",
"status": "succeeded",
"token": "1d2ffee7eef5"
},
"relationships": {
"library": {
"links": {
"related": "https://reactor.adobe.io/environments/ENe66122e6793641d8a8453f63c42e4270/library"
},
"data": {
"id": "LB52ccd7f1e99146999f90cb3bca4940a2",
"type": "libraries"
}
},
"builds": {
"links": {
"related": "https://reactor.adobe.io/environments/ENe66122e6793641d8a8453f63c42e4270/builds"
}
},
"host": {
"links": {
"related": "https://reactor.adobe.io/environments/ENe66122e6793641d8a8453f63c42e4270/host",
"self": "https://reactor.adobe.io/environments/ENe66122e6793641d8a8453f63c42e4270/relationships/host"
},
"data": {
"id": "HT53a4ebcb177d431e8fd26929930de0af",
"type": "hosts"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/environments/ENe66122e6793641d8a8453f63c42e4270/property"
},
"data": {
"id": "PR79de7e0885a9451786f1bf4b9136a72c",
"type": "properties"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PR79de7e0885a9451786f1bf4b9136a72c",
"self": "https://reactor.adobe.io/environments/ENe66122e6793641d8a8453f63c42e4270"
},
"meta": {
"archive_encrypted": false
}
}
}
You can look up the property that owns a library by appending /property
to the path of a GET request.
API format
GET /libraries/{LIBRARY_ID}/property
Parameter | Description |
---|---|
{LIBRARY_ID} |
The id of the library whose property you want to look up. |
Request
curl -X GET \
https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/property \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H "Content-Type: application/vnd.api+json" \
-H 'Accept: application/vnd.api+json;revision=1'
Response
A successful response returns the details of the property that owns the specified library.
{
"data": {
"id": "PRb18ac8f8b69d4f99af43870e91c17543",
"type": "properties",
"attributes": {
"created_at": "2020-12-14T17:51:56.180Z",
"enabled": true,
"name": "Kessel Example Property",
"updated_at": "2020-12-14T17:51:56.180Z",
"platform": "web",
"development": false,
"token": "9d97006b0f9b",
"domains": [
"example.com"
],
"undefined_vars_return_empty": false,
"rule_component_sequencing_enabled": false
},
"relationships": {
"company": {
"links": {
"related": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/company"
},
"data": {
"id": "CO2bf094214ffd4785bb4bcf88c952a7c1",
"type": "companies"
}
},
"callbacks": {
"links": {
"related": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/callbacks"
}
},
"hosts": {
"links": {
"related": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/hosts"
}
},
"environments": {
"links": {
"related": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/environments"
}
},
"libraries": {
"links": {
"related": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/libraries"
}
},
"data_elements": {
"links": {
"related": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/data_elements"
}
},
"extensions": {
"links": {
"related": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/extensions"
}
},
"rules": {
"links": {
"related": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/rules"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/notes"
}
}
},
"links": {
"company": "https://reactor.adobe.io/companies/CO2bf094214ffd4785bb4bcf88c952a7c1",
"data_elements": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/data_elements",
"environments": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/environments",
"extensions": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/extensions",
"rules": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543/rules",
"self": "https://reactor.adobe.io/properties/PRb18ac8f8b69d4f99af43870e91c17543"
},
"meta": {
"rights": [
"approve",
"develop",
"manage_environments",
"manage_extensions",
"publish"
]
}
}
}
You can look up the next library upstream from a library by appending /upstream_library
to the path of a GET request.
API format
GET /libraries/{LIBRARY_ID}/upstream_library
Parameter | Description |
---|---|
{LIBRARY_ID} |
The id of the library whose upstream library you want to look up. |
Request
curl -X GET \
https://reactor.adobe.io/libraries/LB5862ee2dc21b4646a5536c8d6edb0c84/upstream_library \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-H "Content-Type: application/vnd.api+json" \
-H 'Accept: application/vnd.api+json;revision=1'
Response
A successful response returns the details of the upstream library.
{
"data": {
"id": "LB29cc2f86b3684e00a10d196a60f4b0c0",
"type": "libraries",
"attributes": {
"created_at": "2020-12-14T17:49:32.459Z",
"name": "My Library",
"published_at": null,
"state": "submitted",
"updated_at": "2020-12-14T17:49:41.070Z",
"build_required": true
},
"relationships": {
"builds": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0/builds"
}
},
"environment": {
"links": {
"self": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0/relationships/environment"
},
"data": null
},
"data_elements": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0/data_elements",
"self": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0/relationships/data_elements"
}
},
"extensions": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0/extensions",
"self": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0/relationships/extensions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0/notes"
}
},
"rules": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0/rules",
"self": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0/relationships/rules"
}
},
"upstream_library": {
"data": null
},
"property": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0/property"
},
"data": {
"id": "PR7c206ed399644222aef329488cee7fa7",
"type": "properties"
}
},
"last_build": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0/last_build"
},
"data": {
"id": "BL87cde018ecd44ac7a20b0271ab06d04b",
"type": "builds"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PR7c206ed399644222aef329488cee7fa7",
"self": "https://reactor.adobe.io/libraries/LB29cc2f86b3684e00a10d196a60f4b0c0"
},
"meta": {
"build_status": null,
"build_required_detail": "No build found since last state change"
}
}
}