Class: ReactorSDK::Endpoints::RuleComponents

Inherits:
BaseEndpoint show all
Defined in:
lib/reactor_sdk/endpoints/rule_components.rb

Instance Method Summary collapse

Methods inherited from BaseEndpoint

#initialize

Constructor Details

This class inherits a constructor from ReactorSDK::Endpoints::BaseEndpoint

Instance Method Details

#create(property_id:, rule_id:, name:, delegate_descriptor_id:, settings:, extension_id:, rule_order: 50.0, order: 0) ⇒ ReactorSDK::Resources::RuleComponent

Creates a new rule component on a property.

The component is associated with a rule via the relationships.rules payload — NOT via the URL. The endpoint is always POST /properties/:property_id/rule_components.

The delegate_descriptor_id identifies which extension capability powers this component. Examples:

"core::actions::custom-code"         — Core custom code action
"core::conditions::value-comparison"  — Core value comparison condition
"core::events::click"                 — Core click event

The settings field must be a JSON-encoded string matching the schema expected by the delegate. For Core custom code:

settings: JSON.generate({ source: "console.log('hi');", language: "javascript" })

Parameters:

  • property_id (String)

    Adobe property ID

  • rule_id (String)

    Adobe rule ID to attach the component to

  • name (String)

    Display name

  • delegate_descriptor_id (String)

    Extension delegate identifier

  • settings (String)

    JSON-encoded settings string

  • extension_id (String)

    Adobe extension ID providing the delegate

  • rule_order (Float) (defaults to: 50.0)

    Execution order within the rule (default: 50.0)

  • order (Integer) (defaults to: 0)

    Order within same-type components (default: 0)

Returns:

Raises:



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/reactor_sdk/endpoints/rule_components.rb', line 78

def create(
  property_id:,
  rule_id:,
  name:,
  delegate_descriptor_id:,
  settings:,
  extension_id:,
  rule_order: 50.0,
  order:      0
)
  payload = build_rule_component_payload(
    name, delegate_descriptor_id, settings,
    extension_id, rule_id, rule_order, order
  )
  response = @connection.post(
    "/properties/#{property_id}/rule_components",
    payload
  )
  @parser.parse(response['data'], Resources::RuleComponent)
end

#create_note(rule_component_id, text) ⇒ ReactorSDK::Resources::Note

Creates a note on a rule component.

Parameters:

  • rule_component_id (String)
  • text (String)

Returns:



172
173
174
# File 'lib/reactor_sdk/endpoints/rule_components.rb', line 172

def create_note(rule_component_id, text)
  create_note_for_path("/rule_components/#{rule_component_id}/notes", text)
end

#delete(rule_component_id) ⇒ nil

Deletes a rule component permanently.

Parameters:

  • rule_component_id (String)

    Adobe rule component ID

Returns:

  • (nil)

Raises:



120
121
122
123
# File 'lib/reactor_sdk/endpoints/rule_components.rb', line 120

def delete(rule_component_id)
  @connection.delete("/rule_components/#{rule_component_id}")
  nil
end

#extension(rule_component_id) ⇒ ReactorSDK::Resources::Extension

Retrieves the extension that owns the rule component delegate.

Parameters:

  • rule_component_id (String)

Returns:



131
132
133
# File 'lib/reactor_sdk/endpoints/rule_components.rb', line 131

def extension(rule_component_id)
  fetch_resource("/rule_components/#{rule_component_id}/extension", Resources::Extension)
end

#find(rule_component_id) ⇒ ReactorSDK::Resources::RuleComponent

Retrieves a single rule component by its Adobe ID.

Parameters:

  • rule_component_id (String)

    Adobe rule component ID (format: “RC” + hex)

Returns:

Raises:



45
46
47
48
# File 'lib/reactor_sdk/endpoints/rule_components.rb', line 45

def find(rule_component_id)
  response = @connection.get("/rule_components/#{rule_component_id}")
  @parser.parse(response['data'], Resources::RuleComponent)
end

#list_for_rule(rule_id) ⇒ Array<ReactorSDK::Resources::RuleComponent>

Lists all components for a given rule. Follows pagination automatically — returns all components.

Parameters:

  • rule_id (String)

    Adobe rule ID

Returns:

Raises:



33
34
35
36
# File 'lib/reactor_sdk/endpoints/rule_components.rb', line 33

def list_for_rule(rule_id)
  records = @paginator.all("/rules/#{rule_id}/rule_components")
  records.map { |r| @parser.parse(r, Resources::RuleComponent) }
end

#list_notes(rule_component_id) ⇒ Array<ReactorSDK::Resources::Note>

Lists notes attached to a rule component.

Parameters:

  • rule_component_id (String)

Returns:



161
162
163
# File 'lib/reactor_sdk/endpoints/rule_components.rb', line 161

def list_notes(rule_component_id)
  list_notes_for_path("/rule_components/#{rule_component_id}/notes")
end

#origin(rule_component_id) ⇒ ReactorSDK::Resources::RuleComponent

Retrieves the origin revision head for a rule component.

Parameters:

  • rule_component_id (String)

Returns:



141
142
143
# File 'lib/reactor_sdk/endpoints/rule_components.rb', line 141

def origin(rule_component_id)
  fetch_resource("/rule_components/#{rule_component_id}/origin", Resources::RuleComponent)
end

#rules(rule_component_id) ⇒ Array<ReactorSDK::Resources::Rule>

Lists rules that currently utilize a rule component.

Parameters:

  • rule_component_id (String)

Returns:



151
152
153
# File 'lib/reactor_sdk/endpoints/rule_components.rb', line 151

def rules(rule_component_id)
  list_resources("/rule_components/#{rule_component_id}/rules", Resources::Rule)
end

#update(rule_component_id, attributes) ⇒ ReactorSDK::Resources::RuleComponent

Updates an existing rule component.

Parameters:

  • rule_component_id (String)

    Adobe rule component ID

  • attributes (Hash)

    Fields to update

Returns:

Raises:



107
108
109
110
111
# File 'lib/reactor_sdk/endpoints/rule_components.rb', line 107

def update(rule_component_id, attributes)
  payload  = build_payload('rule_components', attributes, id: rule_component_id)
  response = @connection.patch("/rule_components/#{rule_component_id}", payload)
  @parser.parse(response['data'], Resources::RuleComponent)
end