Relazioni nell’API di Reactor
Le risorse nell’API di Reactor sono spesso correlate tra loro. Questo documento fornisce una panoramica dell’impostazione delle relazioni tra le risorse nell’API e dei requisiti di relazione per ciascun tipo di risorsa.
A seconda del tipo di risorsa, alcune relazioni sono obbligatorie. Una relazione obbligatoria implica che la risorsa padre non può esistere senza la relazione. Tutte le altre relazioni sono facoltative.
Sia le relazioni obbligatorie che quelle facoltative vengono stabilite automaticamente dal sistema quando vengono create le relative risorse, oppure devono essere create manualmente. Nel caso di creazione manuale, esistono due metodi possibili a seconda della risorsa in questione:
Per un elenco delle relazioni compatibili per ciascun tipo di risorsa e per i metodi necessari per stabilire le relazioni applicabili, consulta la sezione sui requisiti delle relazioni.
Creare una relazione tramite payload
Alcune relazioni devono essere stabilite manualmente al momento della creazione iniziale di una risorsa. A questo scopo, devi fornire un oggetto relationship
nel payload della richiesta al momento della creazione della risorsa principale. Esempi di queste relazioni includono:
Formato API
POST /properties/{PROPERTY_ID}/{RESOURCE_TYPE}
Parametro |
Descrizione |
{PROPERTY_ID} |
ID della proprietà a cui appartiene la risorsa. |
{RESOURCE_TYPE} |
Tipo di risorsa da creare. |
Richiesta
La seguente richiesta crea un nuovo rule_component
, stabilendo relazioni con rules
e una extension
.
curl -X POST \
https://reactor.adobe.io/properties/PRf606dbddfbdc44f580fc6f342b5ff9be/rule_components \
-H 'Authorization: Bearer [TOKEN]' \
-H 'x-api-key: [KEY]' \
-H 'x-gw-ims-org-id: [ORG_ID]' \
-H 'Accept: application/vnd.api+json;revision=1' \
-H 'Content-Type: application/vnd.api+json' \
-d '{
"data": {
"attributes": {
"delegate_descriptor_id": "kessel-test::events::click",
"name": "My Example Click Event",
"settings": "{\"elementSelector\":\".accordion\",\"bubbleFireIfChildFired\":true}"
},
"relationships": {
"extension": {
"data": {
"id": "EXa2865f4d14204fa094f247406424371b",
"type": "extensions"
}
},
"rules": {
"data": [
{
"id": "RLd53598e3f1884e63bbc8e9c95e463dcf",
"type": "rules"
}
]
}
},
"type": "rule_components"
}
}'
Proprietà |
Descrizione |
relationships |
Oggetto che deve essere fornito durante la creazione di relazioni tramite payload. Ogni chiave in questo oggetto rappresenta un tipo di relazione specifico. Nell’esempio precedente, sono stabilite le relazioni extension e rules , che sono specifiche per rule_components . Per ulteriori informazioni sui tipi di relazione compatibili per risorse diverse, consulta la sezione sui requisiti delle relazioni per risorsa. |
data |
Ogni tipo di relazione fornito sotto l’oggetto relationship deve contenere una proprietà data che fa riferimento all’id e al type della risorsa con cui viene stabilita una relazione. Per creare una relazione con più risorse dello stesso tipo, puoi formattare la proprietà data come array di oggetti, con ogni oggetto contenente l’id e il type di una risorsa applicabile. |
id |
ID univoco di una risorsa. A ogni id deve essere associata una proprietà type di pari livello che indica il tipo di risorsa in questione. |
type |
Tipo di risorsa a cui fa riferimento un campo id di pari livello. I valori accettati sono data_elements , rules , extensions e environments . |
Creare una relazione tramite URL
A differenza di altre risorse, le librerie stabiliscono relazioni attraverso i propri endpoint /relationship
dedicati. Gli esempi includono:
Formato API
POST /properties/{PROPERTY_ID}/libraries/{LIBRARY_ID}/relationships/{RESOURCE_TYPE}
Parametro |
Descrizione |
{PROPERTY_ID} |
ID della proprietà a cui appartiene la libreria. |
{LIBRARY_ID} |
ID della libreria per cui desideri creare una relazione. |
{RESOURCE_TYPE} |
Tipo di risorsa di destinazione della relazione. I valori possibili includono environment , data_elements , extensions e rules . |
Richiesta
La seguente richiesta utilizza l’endpoint /relationships/environment
di una libreria per creare una relazione con un ambiente.
curl -X POST \
https://reactor.adobe.io/properties/PRf606dbddfbdc44f580fc6f342b5ff9be/libraries/LB10c1fd171cd347f19fcb8659a8d679ef/relationships/environment \
-H 'Authorization: Bearer [TOKEN]' \
-H 'x-api-key: [KEY]' \
-H 'x-gw-ims-org-id: [ORG_ID]' \
-H 'Accept: application/vnd.api+json;revision=1' \
-H 'Content-Type: application/vnd.api+json' \
-d '{
"data": {
"id": "ENf395a477d2b24ad696d65b901055b9dc",
"type": "environments",
}
}'
Proprietà |
Descrizione |
data |
Oggetto che fa riferimento all’id e al type della risorsa di destinazione della relazione. Se vuoi creare una relazione con più risorse dello stesso tipo (ad esempio extensions e rules ), la proprietà data deve essere formattata come un array di oggetti, ognuno dei quali deve contenere i valori id e type della risorsa applicabile. |
id |
ID univoco di una risorsa. A ogni id deve essere associata una proprietà type di pari livello che indica il tipo di risorsa in questione. |
type |
Tipo di risorsa a cui fa riferimento un campo id di pari livello. I valori accettati sono data_elements , rules , extensions e environments . |
Requisiti delle relazioni per risorsa
Le tabelle seguenti descrivono le relazioni disponibili per ogni tipo di risorsa, obbligatorie o meno, e il metodo accettato per creare manualmente la relazione applicabile.
NOTA
Se una relazione non è elencata tra quelle create tramite payload o URL, viene assegnata automaticamente dal sistema.
Eventi di audit
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
property |
✓ |
|
|
entity |
✓ |
|
|
Build
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
data_elements |
|
|
|
extensions |
|
|
|
rules |
|
|
|
environment |
✓ |
|
|
library |
✓ |
|
|
property |
✓ |
|
|
Callback
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
property |
✓ |
|
|
Aziende
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
properties |
|
|
|
Elementi dati
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
libraries |
|
|
|
revisions |
✓ |
|
|
notes |
|
|
|
property |
✓ |
|
|
origin |
✓ |
|
|
extension |
✓ |
✓ |
|
updated_with_extension |
✓ |
|
|
updated_with_extension_package |
✓ |
|
|
Ambienti
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
library |
|
|
|
builds |
|
|
|
host |
✓ |
✓ |
|
property |
✓ |
|
|
Estensioni
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
libraries |
|
|
|
revisions |
✓ |
|
|
notes |
|
|
|
property |
✓ |
|
|
origin |
✓ |
|
|
extension_package |
✓ |
✓ |
|
updated_with_extension_package |
✓ |
|
|
Host
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
property |
✓ |
|
|
Librerie
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
builds |
|
|
|
environment |
|
|
✓ |
data_elements |
|
|
✓ |
extensions |
|
|
✓ |
rules |
|
|
✓ |
notes |
|
|
|
upstream_library |
✓ |
|
|
property |
✓ |
|
|
last_build |
|
|
|
Note
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
resource |
✓ |
|
|
Proprietà
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
company |
✓ |
|
|
callbacks |
|
|
|
environments |
|
|
|
libraries |
|
|
|
data_elements |
|
|
|
extensions |
|
|
|
extensions |
|
|
|
Componenti della regola
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
updated_with_extensions_package |
✓ |
|
|
updated_with_extension |
✓ |
|
|
extension |
✓ |
✓ |
|
notes |
|
|
|
origin |
✓ |
|
|
property |
✓ |
|
|
rules |
✓ |
✓ |
|
revisions |
✓ |
|
|
Regole
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
libraries |
|
|
|
revisions |
✓ |
|
|
notes |
|
|
|
property |
✓ |
|
|
origin |
✓ |
|
|
rule_components |
|
|
|
Segreti
Relazione |
Obbligatorio |
Creare tramite payload |
Creare tramite URL |
property |
✓ |
|
✓ |
environment |
✓ |
✓ |
|