In the Reactor API, an extension represents the installed instance of an extension package. An extension makes the features defined by an extension package available to a property. These features are leveraged when creating extensions and rule components.
An extension belongs to exactly one property. A property can have many extensions, but no more than one installed instance of a given extension package.
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.
You can retrieve a list of extensions for a property by making a GET request.
API format
GET properties/{PROPERTY_ID}/extensions
Parameter | Description |
---|---|
{PROPERTY_ID} |
The id of the property whose extensions you want to list. |
Using query parameters, listed extensions can be filtered based on the following attributes:
created_at
dirty
display_name
enabled
name
origin_id
published
published_at
revision_number
updated_at
version
Request
curl -X GET \
https://reactor.adobe.io/properties/PRee071cb5b7794f42b74c913e1ad2e325/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 defined under the specified property.
{
"data": [
{
"id": "EXd9d80c87afb6432ba823a58d3e78299b",
"type": "extensions",
"attributes": {
"created_at": "2020-12-14T17:40:21.000Z",
"deleted_at": null,
"dirty": false,
"enabled": true,
"name": "kessel-test",
"published": false,
"published_at": null,
"revision_number": 0,
"updated_at": "2020-12-14T17:40:21.000Z",
"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/EXd9d80c87afb6432ba823a58d3e78299b/libraries"
}
},
"revisions": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd9d80c87afb6432ba823a58d3e78299b/revisions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd9d80c87afb6432ba823a58d3e78299b/notes"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd9d80c87afb6432ba823a58d3e78299b/property"
},
"data": {
"id": "PRee071cb5b7794f42b74c913e1ad2e325",
"type": "properties"
}
},
"origin": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd9d80c87afb6432ba823a58d3e78299b/origin"
},
"data": {
"id": "EXd9d80c87afb6432ba823a58d3e78299b",
"type": "extensions"
}
},
"updated_with_extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd9d80c87afb6432ba823a58d3e78299b/updated_with_extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
},
"extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd9d80c87afb6432ba823a58d3e78299b/extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PRee071cb5b7794f42b74c913e1ad2e325",
"origin": "https://reactor.adobe.io/extensions/EXd9d80c87afb6432ba823a58d3e78299b",
"self": "https://reactor.adobe.io/extensions/EXd9d80c87afb6432ba823a58d3e78299b",
"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 look up an extension by providing its ID in the path of a GET request.
When extensions are deleted, they are flagged as deleted in the system but are not actually removed. It is therefore possible to retrieve a deleted extension. Deleted extensions can be identified by the presence of a deleted_at
property in the meta
of the returned extension data.
API format
GET /extensions/{EXTENSION_ID}
Parameter | Description |
---|---|
EXTENSION_ID |
The id of the extension that you want to look up. |
Request
curl -X GET \
https://reactor.adobe.io/extensions/EX2ba586f436ac48e390a1ee7e8c9a8f6e \
-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 extension.
{
"data": {
"id": "EX2ba586f436ac48e390a1ee7e8c9a8f6e",
"type": "extensions",
"attributes": {
"created_at": "2020-12-14T17:40:09.823Z",
"deleted_at": null,
"dirty": false,
"enabled": true,
"name": "kessel-test",
"published": false,
"published_at": null,
"revision_number": 0,
"updated_at": "2020-12-14T17:40:09.823Z",
"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/EX2ba586f436ac48e390a1ee7e8c9a8f6e/libraries"
}
},
"revisions": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX2ba586f436ac48e390a1ee7e8c9a8f6e/revisions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX2ba586f436ac48e390a1ee7e8c9a8f6e/notes"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX2ba586f436ac48e390a1ee7e8c9a8f6e/property"
},
"data": {
"id": "PR2254ac6a096c4df38508700093d3e153",
"type": "properties"
}
},
"origin": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX2ba586f436ac48e390a1ee7e8c9a8f6e/origin"
},
"data": {
"id": "EX2ba586f436ac48e390a1ee7e8c9a8f6e",
"type": "extensions"
}
},
"updated_with_extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX2ba586f436ac48e390a1ee7e8c9a8f6e/updated_with_extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
},
"extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX2ba586f436ac48e390a1ee7e8c9a8f6e/extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PR2254ac6a096c4df38508700093d3e153",
"origin": "https://reactor.adobe.io/extensions/EX2ba586f436ac48e390a1ee7e8c9a8f6e",
"self": "https://reactor.adobe.io/extensions/EX2ba586f436ac48e390a1ee7e8c9a8f6e",
"extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a",
"latest_extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a"
},
"meta": {
"latest_revision_number": 1
}
}
}
Extensions are created by referencing an extension package and adding the installed extension to a property. When the installation task completes, a response is returned indicating whether the extension installed successfully.
API format
POST /properties/{PROPERTY_ID}/extensions
Parameter | Description |
---|---|
PROPERTY_ID |
The id of the property that you want to install the extension under. |
Request
curl -X POST \
https://reactor.adobe.io/properties/PRee071cb5b7794f42b74c913e1ad2e325/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' \
-d '{
"data": {
"attributes": {
"delegate_descriptor_id": "example-package::extensionConfiguration::config",
"enabled": true,
"settings": "{\"elementProperty\":\"html\",\"elementSelector\":\".target-element\"}"
},
"relationships": {
"extension_package": {
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
}
},
"type": "extensions"
}
}'
Property | Description |
---|---|
relationships.extension_package |
(Required) An object that references the ID of the extension package being installed. |
attributes.delegate_descriptor_id |
If your extension requires custom settings, then it also requires a delegate descriptor ID. See the guide on delegate descriptor IDs for more information. |
attributes.enabled |
A boolean indicating whether the extension is enabled. |
attributes.settings |
A settings JSON object represented as a string. |
Response
A successful response return the details of the newly created extension.
{
"data": {
"id": "EX8ce7ced633f34bd48d33089ff8fad082",
"type": "extensions",
"attributes": {
"created_at": "2020-12-14T17:32:56.137Z",
"deleted_at": null,
"dirty": false,
"enabled": true,
"name": "kessel-test",
"published": false,
"published_at": null,
"revision_number": 0,
"updated_at": "2020-12-14T17:32:56.137Z",
"delegate_descriptor_id": "example-package::extensionConfiguration::config",
"display_name": "Kessel Test",
"review_status": "unsubmitted",
"version": "1.2.0",
"settings": "{\"elementProperty\":\"html\",\"elementSelector\":\".target-element\"}"
},
"relationships": {
"libraries": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/libraries"
}
},
"revisions": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/revisions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/notes"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/property"
},
"data": {
"id": "PRcf1f3e4c218b4caab8191fab003a8355",
"type": "properties"
}
},
"origin": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/origin"
},
"data": {
"id": "EX8ce7ced633f34bd48d33089ff8fad082",
"type": "extensions"
}
},
"updated_with_extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/updated_with_extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
},
"extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PRcf1f3e4c218b4caab8191fab003a8355",
"origin": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082",
"self": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082",
"extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a",
"latest_extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a"
},
"meta": {
"latest_revision_number": 1
}
}
}
You can revise an extension by including its ID in the path of a PATCH request.
API format
PATCH /extensions/{EXTENSION_ID}
Parameter | Description |
---|---|
EXTENSION_ID |
The id of the extension that you want to revise. |
Request
As with creating an extension, a local version of the revised package must be uploaded via form data.
curl -X PATCH \
https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082 \
-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' \
-d '{
"data": {
"attributes": {
"enabled": false,
},
"meta": {
"action": "revise"
},
"id": "EX85509bc7baea4f8599bc44024ed3f110",
"type": "extensions"
}
}'
Property | Description |
---|---|
attributes |
The attributes that you want to revise. For extensions, you can revise their delegate_descriptor_id , enabled , and settings attributes. |
meta.action |
Must be included with a value of revise when making a revision. |
Response
A successful response return the details of the revised extension, with its meta.latest_revision_number
property increased by 1.
{
"data": {
"id": "EX8ce7ced633f34bd48d33089ff8fad082",
"type": "extensions",
"attributes": {
"created_at": "2020-12-14T17:32:56.137Z",
"deleted_at": null,
"dirty": false,
"enabled": false,
"name": "kessel-test",
"published": false,
"published_at": null,
"revision_number": 0,
"updated_at": "2020-12-14T17:32:56.137Z",
"delegate_descriptor_id": "example-package::extensionConfiguration::config",
"display_name": "Kessel Test",
"review_status": "unsubmitted",
"version": "1.2.0",
"settings": "{\"elementProperty\":\"html\",\"elementSelector\":\".target-element\"}"
},
"relationships": {
"libraries": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/libraries"
}
},
"revisions": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/revisions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/notes"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/property"
},
"data": {
"id": "PRcf1f3e4c218b4caab8191fab003a8355",
"type": "properties"
}
},
"origin": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/origin"
},
"data": {
"id": "EX8ce7ced633f34bd48d33089ff8fad082",
"type": "extensions"
}
},
"updated_with_extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/updated_with_extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
},
"extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PRcf1f3e4c218b4caab8191fab003a8355",
"origin": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082",
"self": "https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082",
"extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a",
"latest_extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a"
},
"meta": {
"latest_revision_number": 2
}
}
}
You can delete an extension by including its ID in the path of a DELETE request.
API format
DELETE /extensions/{EXTENSION_ID}
Parameter | Description |
---|---|
EXTENSION_ID |
The id of the extension that you want to delete. |
Request
curl -X DELETE \
https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082 \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}'
Response
A successful response returns HTTP status 204 (No Content) with no response body, indicating that the extension has been deleted.
Extensions 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 extensions and other compatible resources.
The following calls demonstrate how to retrieve the related resources for an extension. When looking up an extension, 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 libraries that utilize an extension by appending /libraries
to the path of a lookup request.
API format
GET /extensions/{EXTENSION_ID}/libraries
Parameter | Description |
---|---|
{EXTENSION_ID} |
The id of the extension whose libraries you want to list. |
Request
curl -X GET \
https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/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 that use the specified extension.
{
"data": [
{
"id": "LB62d20ad807a949e6b13b0a2c7299eb65",
"type": "libraries",
"attributes": {
"created_at": "2020-12-14T17:50:19.589Z",
"name": "My Library",
"published_at": null,
"state": "development",
"updated_at": "2020-12-14T17:50:19.589Z",
"build_required": true
},
"relationships": {
"builds": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65/builds"
}
},
"environment": {
"links": {
"self": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65/relationships/environment"
},
"data": null
},
"data_elements": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65/data_elements",
"self": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65/relationships/data_elements"
}
},
"extensions": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65/extensions",
"self": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65/relationships/extensions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65/notes"
}
},
"rules": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65/rules",
"self": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65/relationships/rules"
}
},
"upstream_library": {
"data": null
},
"property": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65/property"
},
"data": {
"id": "PR241ba9cd56324ac192de68d658f20cb0",
"type": "properties"
}
},
"last_build": {
"links": {
"related": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65/last_build"
},
"data": null
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PR241ba9cd56324ac192de68d658f20cb0",
"self": "https://reactor.adobe.io/libraries/LB62d20ad807a949e6b13b0a2c7299eb65"
},
"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 list the previous revisions of an extension by appending /revisions
to the path of a lookup request.
API format
GET /extensions/{EXTENSION_ID}/revisions
Parameter | Description |
---|---|
{EXTENSION_ID} |
The id of the extension whose revisions you want to list. |
Request
curl -X GET \
https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/revisions \
-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 revisions for the specified extension.
{
"data": [
{
"id": "EXbfcca9f3ce9d40318b9115159a951e09",
"type": "extensions",
"attributes": {
"created_at": "2020-12-14T17:41:09.023Z",
"deleted_at": null,
"dirty": false,
"enabled": true,
"name": "kessel-test",
"published": false,
"published_at": null,
"revision_number": 1,
"updated_at": "2020-12-14T17:41:09.023Z",
"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/EXbfcca9f3ce9d40318b9115159a951e09/libraries"
}
},
"revisions": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXbfcca9f3ce9d40318b9115159a951e09/revisions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXbfcca9f3ce9d40318b9115159a951e09/notes"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXbfcca9f3ce9d40318b9115159a951e09/property"
},
"data": {
"id": "PR92de152ae31e48a692142ea65c1efeb9",
"type": "properties"
}
},
"origin": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXbfcca9f3ce9d40318b9115159a951e09/origin"
},
"data": {
"id": "EXd485e07fb3d3429b997768ae40de8f02",
"type": "extensions"
}
},
"updated_with_extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXbfcca9f3ce9d40318b9115159a951e09/updated_with_extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
},
"extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXbfcca9f3ce9d40318b9115159a951e09/extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PR92de152ae31e48a692142ea65c1efeb9",
"origin": "https://reactor.adobe.io/extensions/EXd485e07fb3d3429b997768ae40de8f02",
"self": "https://reactor.adobe.io/extensions/EXbfcca9f3ce9d40318b9115159a951e09",
"extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a",
"latest_extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a"
},
"meta": {
"latest_revision_number": 1
}
},
{
"id": "EXd485e07fb3d3429b997768ae40de8f02",
"type": "extensions",
"attributes": {
"created_at": "2020-12-14T17:41:09.002Z",
"deleted_at": null,
"dirty": false,
"enabled": true,
"name": "kessel-test",
"published": false,
"published_at": null,
"revision_number": 0,
"updated_at": "2020-12-14T17:41:09.002Z",
"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/EXd485e07fb3d3429b997768ae40de8f02/libraries"
}
},
"revisions": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd485e07fb3d3429b997768ae40de8f02/revisions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd485e07fb3d3429b997768ae40de8f02/notes"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd485e07fb3d3429b997768ae40de8f02/property"
},
"data": {
"id": "PR92de152ae31e48a692142ea65c1efeb9",
"type": "properties"
}
},
"origin": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd485e07fb3d3429b997768ae40de8f02/origin"
},
"data": {
"id": "EXd485e07fb3d3429b997768ae40de8f02",
"type": "extensions"
}
},
"updated_with_extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd485e07fb3d3429b997768ae40de8f02/updated_with_extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
},
"extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EXd485e07fb3d3429b997768ae40de8f02/extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PR92de152ae31e48a692142ea65c1efeb9",
"origin": "https://reactor.adobe.io/extensions/EXd485e07fb3d3429b997768ae40de8f02",
"self": "https://reactor.adobe.io/extensions/EXd485e07fb3d3429b997768ae40de8f02",
"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": 2
}
}
}
You can look up the extension package that an extension is based on by appending /extension_package
to the path of a GET request.
API format
GET /extensions/{EXTENSION_ID}/extension_package
Parameter | Description |
---|---|
{EXTENSION_ID} |
The id of the extension whose extension you want to look up. |
Request
curl -X GET \
https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/extension \
-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 extension package that the specified extension is based on. The example response below has been truncated for space.
{
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages",
"attributes": {
"actions": [
{
"id": "kessel-test::actions::custom-code",
"name": "custom-code",
"schema": {
"type": "object",
"oneOf": [
{
"required": [
"language",
"source"
],
"properties": {
"global": {
"type": "boolean"
},
"source": {
"type": "string",
"minLength": 1
},
"language": {
"enum": [
"javascript"
]
}
},
"additionalProperties": false
},
{
"required": [
"language",
"source"
],
"properties": {
"source": {
"type": "string",
"minLength": 1
},
"language": {
"enum": [
"html"
]
}
},
"additionalProperties": false
}
],
"$schema": "http://json-schema.org/draft-04/schema#"
},
"libPath": "src/lib/actions/customCode.js",
"viewPath": "actions/customCode.html",
"displayName": "Custom Code"
}
],
"author": {
"url": "http://adobe.com",
"name": "Adobe Systems",
"email": "reactor@adobe.com"
},
"availability": "private",
"cdn_path": "https://assets.adobedtm.com/staging/extensions/EP75db2452065b44e2b8a38ca883ce369a",
"conditions": [
{
"id": "kessel-test::conditions::browser",
"name": "browser",
"schema": {
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema#",
"required": [
"browsers"
],
"properties": {
"browsers": {
"type": "array",
"items": {
"enum": [
"Chrome",
"Firefox",
"IE",
"Edge",
"Safari",
"Mobile Safari"
],
"type": "string"
}
}
},
"additionalProperties": false
},
"libPath": "src/lib/conditions/browser.js",
"viewPath": "conditions/browser.html",
"displayName": "Browser",
"categoryName": "Technology"
}
],
"configuration": null,
"created_at": "2020-11-09T17:51:59.433Z",
"data_elements": [
{
"id": "kessel-test::dataElements::cookie",
"name": "cookie",
"schema": {
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"libPath": "src/lib/dataElements/cookie.js",
"viewPath": "dataElements/cookie.html",
"displayName": "Cookie"
}
],
"description": "Provides default event, condition, and data element types available to all tags users.",
"discontinued": false,
"display_name": "Kessel Test",
"events": [
{
"id": "kessel-test::events::blur",
"name": "blur",
"schema": {
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema#",
"properties": {
"bubbleStop": {
"type": "boolean"
},
"elementSelector": {
"type": "string",
"minLength": 1
},
"elementProperties": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"value"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"value": {
"type": "string"
},
"valueIsRegex": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"bubbleFireIfParent": {
"type": "boolean"
},
"bubbleFireIfChildFired": {
"type": "boolean"
}
},
"additionalProperties": false
},
"libPath": "src/lib/events/blur.js",
"viewPath": "events/blur.html",
"displayName": "Blur",
"categoryName": "Form"
}
],
"exchange_url": null,
"hosted_lib_files": null,
"icon_path": "resources/icons/core.svg",
"main": null,
"name": "kessel-test",
"owner_org_id": "08364A825824E04F0A494115@AdobeOrg",
"resources": null,
"shared_modules": null,
"status": "succeeded",
"platform": "web",
"updated_at": "2020-11-09T17:54:01.487Z",
"version": "1.2.0",
"view_base_path": "dist/"
},
"links": {
"self": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a"
}
}
}
You can look up the origin of an extension by appending /origin
to the path of a GET request. The origin of an extension is the previous revision that was updated to create the current revision.
API format
GET /extensions/{EXTENSION_ID}/origin
Parameter | Description |
---|---|
{EXTENSION_ID} |
The id of the extension whose origin you want to look up. |
Request
curl -X GET \
https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/origin \
-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 specified extension’s origin.
{
"data": {
"id": "EX524f2cd22ae4490eaf73cc9214eb217d",
"type": "extensions",
"attributes": {
"created_at": "2020-12-14T17:41:21.397Z",
"deleted_at": null,
"dirty": false,
"enabled": true,
"name": "kessel-test",
"published": false,
"published_at": null,
"revision_number": 0,
"updated_at": "2020-12-14T17:41:21.397Z",
"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/EX524f2cd22ae4490eaf73cc9214eb217d/libraries"
}
},
"revisions": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX524f2cd22ae4490eaf73cc9214eb217d/revisions"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX524f2cd22ae4490eaf73cc9214eb217d/notes"
}
},
"property": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX524f2cd22ae4490eaf73cc9214eb217d/property"
},
"data": {
"id": "PR88d6b8ee423b44a49de1dee26391e25b",
"type": "properties"
}
},
"origin": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX524f2cd22ae4490eaf73cc9214eb217d/origin"
},
"data": {
"id": "EX524f2cd22ae4490eaf73cc9214eb217d",
"type": "extensions"
}
},
"updated_with_extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX524f2cd22ae4490eaf73cc9214eb217d/updated_with_extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
},
"extension_package": {
"links": {
"related": "https://reactor.adobe.io/extensions/EX524f2cd22ae4490eaf73cc9214eb217d/extension_package"
},
"data": {
"id": "EP75db2452065b44e2b8a38ca883ce369a",
"type": "extension_packages"
}
}
},
"links": {
"property": "https://reactor.adobe.io/properties/PR88d6b8ee423b44a49de1dee26391e25b",
"origin": "https://reactor.adobe.io/extensions/EX524f2cd22ae4490eaf73cc9214eb217d",
"self": "https://reactor.adobe.io/extensions/EX524f2cd22ae4490eaf73cc9214eb217d",
"extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a",
"latest_extension_package": "https://reactor.adobe.io/extension_packages/EP75db2452065b44e2b8a38ca883ce369a"
},
"meta": {
"latest_revision_number": 1
}
}
}
You can look up the property that owns an extension by appending /property
to the path of a GET request.
API format
GET /extensions/{EXTENSION_ID}/property
Parameter | Description |
---|---|
{EXTENSION_ID} |
The id of the extension whose property you want to look up. |
Request
curl -X GET \
https://reactor.adobe.io/extensions/EX8ce7ced633f34bd48d33089ff8fad082/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 extension.
{
"data": {
"id": "PR96fd3675be144ddc8c4540d79430355a",
"type": "properties",
"attributes": {
"created_at": "2020-12-14T17:53:06.993Z",
"enabled": true,
"name": "Kessel Example Property",
"updated_at": "2020-12-14T17:53:06.993Z",
"platform": "web",
"development": false,
"token": "bf75a40b3c34",
"domains": [
"example.com"
],
"undefined_vars_return_empty": false,
"rule_component_sequencing_enabled": false
},
"relationships": {
"company": {
"links": {
"related": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/company"
},
"data": {
"id": "CO2bf094214ffd4785bb4bcf88c952a7c1",
"type": "companies"
}
},
"callbacks": {
"links": {
"related": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/callbacks"
}
},
"hosts": {
"links": {
"related": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/hosts"
}
},
"environments": {
"links": {
"related": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/environments"
}
},
"libraries": {
"links": {
"related": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/libraries"
}
},
"data_elements": {
"links": {
"related": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/data_elements"
}
},
"extensions": {
"links": {
"related": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/extensions"
}
},
"rules": {
"links": {
"related": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/rules"
}
},
"notes": {
"links": {
"related": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/notes"
}
}
},
"links": {
"company": "https://reactor.adobe.io/companies/CO2bf094214ffd4785bb4bcf88c952a7c1",
"data_elements": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/data_elements",
"environments": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/environments",
"extensions": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/extensions",
"rules": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a/rules",
"self": "https://reactor.adobe.io/properties/PR96fd3675be144ddc8c4540d79430355a"
},
"meta": {
"rights": [
"approve",
"develop",
"manage_environments",
"manage_extensions",
"publish"
]
}
}
}