lex-service_now 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +51 -49
- data/CLAUDE.md +107 -79
- data/README.md +140 -94
- data/lex-service_now.gemspec +1 -1
- data/lib/legion/extensions/service_now/access_control/runners/access_control.rb +54 -0
- data/lib/legion/extensions/service_now/account/runners/account.rb +4 -4
- data/lib/legion/extensions/service_now/aggregate/runners/aggregate.rb +1 -1
- data/lib/legion/extensions/service_now/approval/runners/approval.rb +5 -5
- data/lib/legion/extensions/service_now/asset/runners/asset.rb +6 -6
- data/lib/legion/extensions/service_now/attachment/runners/attachment.rb +4 -4
- data/lib/legion/extensions/service_now/audit/runners/audit.rb +3 -3
- data/lib/legion/extensions/service_now/business_rule/runners/business_rule.rb +5 -5
- data/lib/legion/extensions/service_now/calendar/runners/calendar.rb +60 -0
- data/lib/legion/extensions/service_now/catalog_task/runners/catalog_task.rb +51 -0
- data/lib/legion/extensions/service_now/catalog_variable/runners/catalog_variable.rb +5 -5
- data/lib/legion/extensions/service_now/change/runners/change.rb +18 -18
- data/lib/legion/extensions/service_now/ci_relationship/runners/ci_relationship.rb +52 -0
- data/lib/legion/extensions/service_now/client.rb +22 -0
- data/lib/legion/extensions/service_now/cmdb/instance/runners/instance.rb +7 -7
- data/lib/legion/extensions/service_now/cmdb/meta/runners/meta.rb +2 -2
- data/lib/legion/extensions/service_now/cmdb_health/runners/cmdb_health.rb +48 -0
- data/lib/legion/extensions/service_now/company/runners/company.rb +5 -5
- data/lib/legion/extensions/service_now/contract/runners/contract.rb +5 -5
- data/lib/legion/extensions/service_now/cost_center/runners/cost_center.rb +5 -5
- data/lib/legion/extensions/service_now/csm/runners/csm.rb +64 -0
- data/lib/legion/extensions/service_now/currency/runners/currency.rb +40 -0
- data/lib/legion/extensions/service_now/department/runners/department.rb +5 -5
- data/lib/legion/extensions/service_now/deprecation_log/runners/deprecation_log.rb +43 -0
- data/lib/legion/extensions/service_now/discovery/runners/discovery.rb +5 -5
- data/lib/legion/extensions/service_now/email_log/runners/email_log.rb +3 -3
- data/lib/legion/extensions/service_now/errors.rb +26 -0
- data/lib/legion/extensions/service_now/event/runners/event.rb +3 -3
- data/lib/legion/extensions/service_now/flow/runners/flow.rb +6 -6
- data/lib/legion/extensions/service_now/grc/runners/grc.rb +61 -0
- data/lib/legion/extensions/service_now/helpers/client.rb +55 -0
- data/lib/legion/extensions/service_now/helpers/pagination.rb +31 -0
- data/lib/legion/extensions/service_now/helpers/retry.rb +32 -0
- data/lib/legion/extensions/service_now/hr_case/runners/hr_case.rb +5 -5
- data/lib/legion/extensions/service_now/import_set/runners/import_set.rb +2 -2
- data/lib/legion/extensions/service_now/incident/runners/incident.rb +6 -6
- data/lib/legion/extensions/service_now/integration_hub/runners/integration_hub.rb +49 -0
- data/lib/legion/extensions/service_now/knowledge/runners/knowledge.rb +5 -5
- data/lib/legion/extensions/service_now/knowledge_base/runners/knowledge_base.rb +64 -0
- data/lib/legion/extensions/service_now/knowledge_feedback/runners/knowledge_feedback.rb +45 -0
- data/lib/legion/extensions/service_now/license/runners/license.rb +44 -0
- data/lib/legion/extensions/service_now/location/runners/location.rb +5 -5
- data/lib/legion/extensions/service_now/metric/runners/metric.rb +47 -0
- data/lib/legion/extensions/service_now/mid_server/runners/mid_server.rb +5 -5
- data/lib/legion/extensions/service_now/notification/runners/notification.rb +5 -5
- data/lib/legion/extensions/service_now/on_call/runners/on_call.rb +5 -5
- data/lib/legion/extensions/service_now/performance_analytics/runners/performance_analytics.rb +5 -5
- data/lib/legion/extensions/service_now/problem/runners/problem.rb +6 -6
- data/lib/legion/extensions/service_now/project/runners/project.rb +6 -6
- data/lib/legion/extensions/service_now/release/runners/release.rb +5 -5
- data/lib/legion/extensions/service_now/request/runners/request.rb +6 -6
- data/lib/legion/extensions/service_now/scheduled_job/runners/scheduled_job.rb +5 -5
- data/lib/legion/extensions/service_now/script_action/runners/script_action.rb +50 -0
- data/lib/legion/extensions/service_now/script_include/runners/script_include.rb +5 -5
- data/lib/legion/extensions/service_now/security_incident/runners/security_incident.rb +5 -5
- data/lib/legion/extensions/service_now/service_catalog/runners/service_catalog.rb +11 -11
- data/lib/legion/extensions/service_now/service_portal/runners/service_portal.rb +55 -0
- data/lib/legion/extensions/service_now/skills/approval_workflow.rb +5 -5
- data/lib/legion/extensions/service_now/skills/asset_management.rb +5 -5
- data/lib/legion/extensions/service_now/skills/change_request.rb +6 -6
- data/lib/legion/extensions/service_now/skills/cmdb_query.rb +5 -5
- data/lib/legion/extensions/service_now/skills/incident.rb +6 -6
- data/lib/legion/extensions/service_now/skills/knowledge.rb +5 -5
- data/lib/legion/extensions/service_now/skills/problem_management.rb +6 -6
- data/lib/legion/extensions/service_now/skills/request_fulfillment.rb +6 -6
- data/lib/legion/extensions/service_now/skills/security_incident_response.rb +6 -6
- data/lib/legion/extensions/service_now/skills/service_catalog.rb +6 -6
- data/lib/legion/extensions/service_now/sla/runners/sla.rb +5 -5
- data/lib/legion/extensions/service_now/survey/runners/survey.rb +5 -5
- data/lib/legion/extensions/service_now/system_property/runners/system_property.rb +6 -6
- data/lib/legion/extensions/service_now/table/runners/table.rb +7 -5
- data/lib/legion/extensions/service_now/tag/runners/tag.rb +61 -0
- data/lib/legion/extensions/service_now/task/runners/task.rb +5 -5
- data/lib/legion/extensions/service_now/ui_action/runners/ui_action.rb +53 -0
- data/lib/legion/extensions/service_now/ui_policy/runners/ui_policy.rb +51 -0
- data/lib/legion/extensions/service_now/update_set/runners/update_set.rb +6 -6
- data/lib/legion/extensions/service_now/user/runners/user.rb +7 -7
- data/lib/legion/extensions/service_now/user_group/runners/user_group.rb +9 -9
- data/lib/legion/extensions/service_now/vendor/runners/vendor.rb +60 -0
- data/lib/legion/extensions/service_now/version.rb +1 -1
- data/lib/legion/extensions/service_now/work_order/runners/work_order.rb +6 -6
- data/lib/legion/extensions/service_now/workflow/runners/workflow.rb +6 -6
- data/lib/legion/extensions/service_now.rb +23 -0
- metadata +26 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f18e533db37ce9fdaf5c08842bd1c7f147a5e395a977efe7d7ce4d5c865fbe58
|
|
4
|
+
data.tar.gz: c72de9f35aa66e0499592cbfe21cf6a65d951e6943e6b689d3f97c2cee5762ff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 25217fe95b96c91c97dc82fad4d2fdfedd04880ed910f35a7a2a24841f3210400a2a3bf95876b09a833bea69b887e64f7994b41ad0773b98cb8d8865d60c0a2d
|
|
7
|
+
data.tar.gz: 9d9ebe39b1c39b8e2272f28ec4a8a0580758e056e88fa60b5dfbd533ddfbd2e910af73e20a3f79ff6d7a41cc385eae3a81a1fb7c8a2d1f4b7319a2afde31c860
|
data/CHANGELOG.md
CHANGED
|
@@ -1,58 +1,60 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.1] - 2026-05-25
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- Skills: move `steps` DSL declaration after method definitions in all 10 skills to fix
|
|
7
|
+
`InvalidSkill` error on load (`validate_steps!` requires methods to be defined first)
|
|
8
|
+
|
|
9
|
+
## [0.3.0] - 2026-04-22
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- Tag runner (7 methods) — label + label_entry CRUD, tag/untag records
|
|
13
|
+
- Metric runner (4 methods) — metric_definition + metric_instance
|
|
14
|
+
- Currency runner (3 methods) — fx_currency + fx_rate
|
|
15
|
+
- Calendar runner (6 methods) — cmn_schedule CRUD + entries
|
|
16
|
+
- KnowledgeFeedback runner (4 methods) — kb_feedback + kb_view
|
|
17
|
+
- License runner (4 methods) — license_agreement + allocations + installed software
|
|
18
|
+
- DeprecationLog runner (4 methods) — upgrade history + deprecation log
|
|
19
|
+
- CmdbHealth runner (4 methods) — duplicate CIs, stale CIs, health dashboard
|
|
20
|
+
- ServicePortal runner (6 methods) — portals, pages, widgets
|
|
21
|
+
- GRC runner (7 methods) — risks, controls, audits, policies
|
|
22
|
+
- CSM runner (6 methods) — customer service cases and contacts
|
|
23
|
+
- IntegrationHub runner (5 methods) — spokes, action types, connections, credentials
|
|
24
|
+
- Vendor runner (5 methods) — vendor-filtered company records
|
|
25
|
+
- CiRelationship runner (5 methods) — cmdb_rel_type + cmdb_rel_ci
|
|
26
|
+
- ScriptAction runner (5 methods) — sysevent_script_action CRUD
|
|
27
|
+
- UiPolicy runner (5 methods) — sys_ui_policy CRUD
|
|
28
|
+
- UiAction runner (5 methods) — sys_ui_action CRUD
|
|
29
|
+
- AccessControl runner (5 methods) — sys_security_acl CRUD
|
|
30
|
+
- CatalogTask runner (4 methods) — sc_task list/get/update/close
|
|
31
|
+
- KnowledgeBase runner (6 methods) — kb_knowledge_base CRUD + categories
|
|
32
|
+
- Helpers::Pagination — auto-fetches all pages for any list method
|
|
33
|
+
- Helpers::Retry — retries on RateLimitError/ServerError with exponential backoff
|
|
34
|
+
- Helpers::Client#handle_response — raises typed errors on non-2xx responses
|
|
35
|
+
- Errors module — AuthenticationError, AuthorizationError, NotFoundError,
|
|
36
|
+
UnprocessableError, RateLimitError, ServerError
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
- Table runner: table_create/table_update no longer leak auth kwargs into request body
|
|
40
|
+
- Change runner: task methods renamed to list_change_tasks/create_change_task/
|
|
41
|
+
update_change_task/delete_change_task to avoid collision with Task runner
|
|
42
|
+
|
|
3
43
|
## [0.2.0] - 2026-04-22
|
|
4
44
|
|
|
5
45
|
### Added
|
|
6
|
-
- Incident
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- SLA runner (5 methods) — definitions and task SLA tracking
|
|
17
|
-
- ImportSet runner (2 methods)
|
|
18
|
-
- Event runner (3 methods)
|
|
19
|
-
- PerformanceAnalytics runner (5 methods) — widgets, scorecards, indicators
|
|
20
|
-
- Flow/Subflow runner (6 methods)
|
|
21
|
-
- Notification runner (5 methods)
|
|
22
|
-
- EmailLog runner (3 methods)
|
|
23
|
-
- Audit runner (3 methods) — field change history
|
|
24
|
-
- SystemProperty runner (6 methods)
|
|
25
|
-
- Asset runner (6 methods) including hardware
|
|
26
|
-
- Location runner (5 methods)
|
|
27
|
-
- Department runner (5 methods)
|
|
28
|
-
- Company runner (5 methods)
|
|
29
|
-
- Project runner (6 methods) including project tasks
|
|
30
|
-
- Release runner (5 methods)
|
|
31
|
-
- HrCase runner (5 methods)
|
|
32
|
-
- SecurityIncident runner (5 methods)
|
|
33
|
-
- UpdateSet runner (6 methods) including change listing
|
|
34
|
-
- ScriptInclude runner (5 methods)
|
|
35
|
-
- BusinessRule runner (5 methods)
|
|
36
|
-
- ScheduledJob runner (5 methods)
|
|
37
|
-
- OnCall runner (5 methods) — schedules, members, who_is_on_call
|
|
38
|
-
- Survey runner (5 methods) — instances and responses
|
|
39
|
-
- Contract runner (5 methods)
|
|
40
|
-
- CostCenter runner (5 methods)
|
|
41
|
-
- WorkOrder runner (6 methods) including tasks
|
|
42
|
-
- Discovery runner (5 methods)
|
|
43
|
-
- MidServer runner (5 methods)
|
|
44
|
-
- CatalogVariable runner (5 methods)
|
|
45
|
-
- Workflow runner (6 methods) — contexts and cancellation
|
|
46
|
-
- 10 LLM skills: Incident, ChangeRequest, CmdbQuery, Knowledge, ServiceCatalog, ProblemManagement, RequestFulfillment, ApprovalWorkflow, AssetManagement, SecurityIncidentResponse
|
|
46
|
+
- Incident, Problem, Attachment, Table, Aggregate, User, UserGroup runners
|
|
47
|
+
- Request/RITM, Approval, Task, SLA, ImportSet, Event runners
|
|
48
|
+
- PerformanceAnalytics, Flow/Subflow runners
|
|
49
|
+
- Notification, EmailLog, Audit, SystemProperty runners
|
|
50
|
+
- Asset, Location, Department, Company, CostCenter runners
|
|
51
|
+
- Project, Release, SecurityIncident, HrCase runners
|
|
52
|
+
- UpdateSet, ScriptInclude, BusinessRule, ScheduledJob runners
|
|
53
|
+
- OnCall, Survey, Contract, WorkOrder, Discovery, MidServer runners
|
|
54
|
+
- CatalogVariable, Workflow runners
|
|
55
|
+
- 10 LLM skills
|
|
47
56
|
|
|
48
57
|
## [0.1.0] - 2026-04-22
|
|
49
58
|
|
|
50
59
|
### Added
|
|
51
|
-
- Initial release
|
|
52
|
-
- Change Management API (14 methods)
|
|
53
|
-
- CMDB Instance API (7 methods)
|
|
54
|
-
- CMDB Meta API (2 methods)
|
|
55
|
-
- Knowledge API (5 methods)
|
|
56
|
-
- Service Catalog API (11 methods)
|
|
57
|
-
- Account API (4 methods)
|
|
58
|
-
- LLM skill triggers for Incident, ChangeRequest, CmdbQuery, Knowledge, ServiceCatalog
|
|
60
|
+
- Initial release with Change, CMDB Instance/Meta, Knowledge, Service Catalog, Account
|
data/CLAUDE.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
## Purpose
|
|
8
8
|
|
|
9
|
-
Comprehensive Legion Extension connecting LegionIO to ServiceNow via REST APIs. Covers
|
|
9
|
+
Comprehensive Legion Extension connecting LegionIO to ServiceNow via REST APIs. Covers **66 domains** and **346 methods** spanning ITSM, ITOM, ITAM, HR, Security, GRC, CSM, DevOps, and platform administration.
|
|
10
10
|
|
|
11
|
-
**Version**: 0.
|
|
11
|
+
**Version**: 0.3.0
|
|
12
12
|
**GitHub**: https://github.com/LegionIO/lex-service_now
|
|
13
13
|
**License**: MIT
|
|
14
14
|
|
|
@@ -16,106 +16,134 @@ Comprehensive Legion Extension connecting LegionIO to ServiceNow via REST APIs.
|
|
|
16
16
|
|
|
17
17
|
```
|
|
18
18
|
Legion::Extensions::ServiceNow
|
|
19
|
+
+-- Errors # AuthenticationError, AuthorizationError,
|
|
20
|
+
| # NotFoundError, UnprocessableError,
|
|
21
|
+
| # RateLimitError, ServerError
|
|
19
22
|
+-- Helpers/
|
|
20
|
-
| +-- Client
|
|
23
|
+
| +-- Client # connection() with OAuth2→Bearer→Basic fallback
|
|
24
|
+
| | # handle_response() raises typed errors on non-2xx
|
|
25
|
+
| +-- Pagination # paginate(method, **opts) auto-fetches all pages
|
|
26
|
+
| +-- Retry # with_retry(max_retries:) retries on rate limit/server errors
|
|
21
27
|
+-- ITSM/
|
|
22
|
-
| +-- Change
|
|
23
|
-
| +-- Incident
|
|
24
|
-
| +-- Problem
|
|
25
|
-
| +-- Request
|
|
26
|
-
| +-- Approval
|
|
27
|
-
| +-- Task
|
|
28
|
-
| +-- Sla
|
|
28
|
+
| +-- Change (14) — normal/emergency/standard + change_tasks/conflicts/approvals
|
|
29
|
+
| +-- Incident (6) — CRUD + resolve
|
|
30
|
+
| +-- Problem (6) — CRUD + close
|
|
31
|
+
| +-- Request (6) — sc_request + sc_req_item
|
|
32
|
+
| +-- Approval (5) — approve/reject + list_for_record
|
|
33
|
+
| +-- Task (5) — CRUD + add_work_note
|
|
34
|
+
| +-- Sla (5) — definitions + task SLAs
|
|
35
|
+
| +-- CatalogTask (4) — sc_task list/get/update/close
|
|
29
36
|
+-- CMDB/
|
|
30
|
-
| +-- Cmdb::Instance
|
|
31
|
-
| +-- Cmdb::Meta
|
|
32
|
-
+--
|
|
33
|
-
| +--
|
|
37
|
+
| +-- Cmdb::Instance (7) — CI CRUD + relationships
|
|
38
|
+
| +-- Cmdb::Meta (2) — hierarchy + class metadata
|
|
39
|
+
| +-- CiRelationship (5) — cmdb_rel_type + cmdb_rel_ci
|
|
40
|
+
| +-- CmdbHealth (4) — duplicates, stale CIs, health dashboard
|
|
34
41
|
+-- ServiceCatalog/
|
|
35
|
-
| +-- ServiceCatalog
|
|
36
|
-
| +-- CatalogVariable
|
|
37
|
-
+--
|
|
38
|
-
| +--
|
|
39
|
-
| +--
|
|
40
|
-
| +--
|
|
41
|
-
+--
|
|
42
|
-
| +--
|
|
43
|
-
| +--
|
|
42
|
+
| +-- ServiceCatalog (11) — catalogs/items/cart/order
|
|
43
|
+
| +-- CatalogVariable (5) — item_option_new CRUD
|
|
44
|
+
+-- Knowledge/
|
|
45
|
+
| +-- Knowledge (5) — article CRUD
|
|
46
|
+
| +-- KnowledgeBase (6) — kb_knowledge_base CRUD + categories
|
|
47
|
+
| +-- KnowledgeFeedback (4) — feedback + views
|
|
48
|
+
+-- UserManagement/
|
|
49
|
+
| +-- User (7) — CRUD + lookup_by_username/email
|
|
50
|
+
| +-- UserGroup (9) — CRUD + member management
|
|
51
|
+
| +-- Account (4) — account CRUD
|
|
44
52
|
+-- Organization/
|
|
45
|
-
| +-- Location
|
|
46
|
-
| +-- Department
|
|
47
|
-
| +-- Company
|
|
48
|
-
| +-- CostCenter
|
|
49
|
-
+--
|
|
50
|
-
|
|
51
|
-
| +--
|
|
53
|
+
| +-- Location (5) — cmn_location CRUD
|
|
54
|
+
| +-- Department (5) — cmn_department CRUD
|
|
55
|
+
| +-- Company (5) — core_company CRUD
|
|
56
|
+
| +-- CostCenter (5) — cmn_cost_center CRUD
|
|
57
|
+
| +-- Vendor (5) — vendor-filtered company records
|
|
58
|
+
+-- Assets/
|
|
59
|
+
| +-- Asset (6) — alm_asset CRUD + hardware
|
|
60
|
+
| +-- Contract (5) — ast_contract CRUD
|
|
61
|
+
| +-- License (4) — agreements + allocations + installed software
|
|
52
62
|
+-- Security/
|
|
53
|
-
| +-- SecurityIncident
|
|
63
|
+
| +-- SecurityIncident (5) — sn_si_incident CRUD
|
|
64
|
+
| +-- AccessControl (5) — sys_security_acl CRUD
|
|
65
|
+
| +-- Grc (7) — risks + controls + audits + policies
|
|
54
66
|
+-- HR/
|
|
55
|
-
| +-- HrCase
|
|
56
|
-
+--
|
|
57
|
-
| +--
|
|
58
|
-
|
|
59
|
-
| +--
|
|
60
|
-
| +--
|
|
61
|
-
|
|
62
|
-
| +--
|
|
63
|
-
| +--
|
|
64
|
-
| +--
|
|
67
|
+
| +-- HrCase (5) — sn_hr_core_case CRUD
|
|
68
|
+
+-- CustomerService/
|
|
69
|
+
| +-- Csm (6) — customer cases + contacts
|
|
70
|
+
+-- ProjectRelease/
|
|
71
|
+
| +-- Project (6) — pm_project CRUD + tasks
|
|
72
|
+
| +-- Release (5) — rm_release CRUD
|
|
73
|
+
+-- PlatformAdmin/
|
|
74
|
+
| +-- SystemProperty (6) — sys_properties CRUD
|
|
75
|
+
| +-- UpdateSet (6) — CRUD + list changes
|
|
76
|
+
| +-- ScriptInclude (5) — sys_script_include CRUD
|
|
77
|
+
| +-- BusinessRule (5) — sys_script CRUD
|
|
78
|
+
| +-- ScriptAction (5) — sysevent_script_action CRUD
|
|
79
|
+
| +-- ScheduledJob (5) — sysauto_script CRUD
|
|
80
|
+
| +-- UiPolicy (5) — sys_ui_policy CRUD
|
|
81
|
+
| +-- UiAction (5) — sys_ui_action CRUD
|
|
82
|
+
| +-- Workflow (6) — wf_workflow + contexts
|
|
83
|
+
| +-- Flow (6) — sn_fd flows + subflows
|
|
84
|
+
| +-- Audit (3) — sys_audit + field changes
|
|
85
|
+
| +-- DeprecationLog (4) — upgrade history + deprecation log
|
|
65
86
|
+-- ITOM/
|
|
66
|
-
| +-- Discovery
|
|
67
|
-
| +-- MidServer
|
|
68
|
-
| +-- Event
|
|
87
|
+
| +-- Discovery (5) — schedules/logs/devices
|
|
88
|
+
| +-- MidServer (5) — ecc_agent CRUD + capabilities
|
|
89
|
+
| +-- Event (3) — sysevent CRUD
|
|
69
90
|
+-- Analytics/
|
|
70
|
-
| +-- PerformanceAnalytics
|
|
71
|
-
| +--
|
|
91
|
+
| +-- PerformanceAnalytics (5) — widgets/scorecards/indicators
|
|
92
|
+
| +-- Metric (4) — definitions + instances
|
|
72
93
|
+-- Comms/
|
|
73
|
-
| +-- Notification
|
|
74
|
-
| +-- EmailLog
|
|
75
|
-
+--
|
|
76
|
-
| +-- WorkOrder
|
|
77
|
-
| +-- OnCall
|
|
94
|
+
| +-- Notification (5) — sysevent_email_action CRUD
|
|
95
|
+
| +-- EmailLog (3) — sys_email list/get/list_for_record
|
|
96
|
+
+-- FieldService/
|
|
97
|
+
| +-- WorkOrder (6) — wm_order CRUD + tasks + close
|
|
98
|
+
| +-- OnCall (5) — schedules + members + who_is_on_call
|
|
99
|
+
+-- PlatformModules/
|
|
100
|
+
| +-- ServicePortal (6) — portals/pages/widgets
|
|
101
|
+
| +-- IntegrationHub (5) — spokes/connections/credentials
|
|
78
102
|
+-- Utilities/
|
|
79
|
-
| +-- Table
|
|
80
|
-
| +-- ImportSet
|
|
81
|
-
| +--
|
|
103
|
+
| +-- Table (5) — generic CRUD on any table
|
|
104
|
+
| +-- ImportSet (2) — /api/now/import
|
|
105
|
+
| +-- Aggregate (1) — stats queries on any table
|
|
106
|
+
| +-- Attachment (5) — upload/download files
|
|
107
|
+
| +-- Survey (5) — assessments + instances + responses
|
|
108
|
+
| +-- Tag (7) — label + label_entry CRUD
|
|
109
|
+
| +-- Currency (3) — fx_currency + fx_rate
|
|
110
|
+
| +-- Calendar (6) — cmn_schedule CRUD + entries
|
|
82
111
|
+-- Skills/ (loaded only if legion-llm available)
|
|
83
112
|
| +-- Incident, ChangeRequest, CmdbQuery, Knowledge, ServiceCatalog
|
|
84
113
|
| +-- ProblemManagement, RequestFulfillment, ApprovalWorkflow
|
|
85
114
|
| +-- AssetManagement, SecurityIncidentResponse
|
|
86
|
-
+-- Client #
|
|
115
|
+
+-- Client # includes all 66 runners + helpers
|
|
87
116
|
```
|
|
88
117
|
|
|
118
|
+
## Known Method Name Notes
|
|
119
|
+
|
|
120
|
+
- Change runner task methods are named `list_change_tasks`, `create_change_task`, `update_change_task`, `delete_change_task` to avoid collision with the generic Task runner's `list_tasks`/`update_task`.
|
|
121
|
+
|
|
89
122
|
## Authentication
|
|
90
123
|
|
|
91
|
-
|
|
92
|
-
1. **OAuth2** — `client_id` + `client_secret` →
|
|
124
|
+
Priority order (most secure wins):
|
|
125
|
+
1. **OAuth2** — `client_id` + `client_secret` → `/oauth_token.do` → memoized in `@fetch_oauth2_token`
|
|
93
126
|
2. **Bearer** — `token` → `Authorization: Bearer <token>`
|
|
94
|
-
3. **Basic Auth** — `username` + `password`
|
|
127
|
+
3. **Basic Auth** — `username` + `password`
|
|
95
128
|
|
|
96
|
-
|
|
129
|
+
URL defaults to `Legion::Settings[:service_now][:url]`, overridable per call or `Client.new`.
|
|
97
130
|
|
|
98
|
-
##
|
|
131
|
+
## Helpers
|
|
99
132
|
|
|
133
|
+
### Pagination
|
|
100
134
|
```ruby
|
|
101
|
-
|
|
102
|
-
url: 'https://your-instance.service-now.com',
|
|
103
|
-
username: 'svc_account',
|
|
104
|
-
password: 'secret'
|
|
105
|
-
)
|
|
106
|
-
|
|
107
|
-
# Or with OAuth2
|
|
108
|
-
client = Legion::Extensions::ServiceNow::Client.new(
|
|
109
|
-
url: 'https://your-instance.service-now.com',
|
|
110
|
-
client_id: 'abc',
|
|
111
|
-
client_secret: 'xyz'
|
|
112
|
-
)
|
|
113
|
-
|
|
114
|
-
client.list_incidents(sysparm_query: 'state=1', sysparm_limit: 50)
|
|
115
|
-
client.create_change(short_description: 'Deploy v2.0')
|
|
116
|
-
client.get_ci(class_name: 'cmdb_ci_server', sys_id: 'abc123')
|
|
135
|
+
all = client.paginate(:list_incidents, sysparm_query: 'state=1')
|
|
117
136
|
```
|
|
118
137
|
|
|
138
|
+
### Retry
|
|
139
|
+
```ruby
|
|
140
|
+
client.with_retry(max_retries: 3) { client.create_incident(...) }
|
|
141
|
+
```
|
|
142
|
+
Retries on `RateLimitError` (exponential backoff) and `ServerError`. Does not retry auth errors.
|
|
143
|
+
|
|
144
|
+
### Error Handling
|
|
145
|
+
`handle_response` is called automatically; raises typed `Errors::*` on non-2xx. Errors carry `.status` and `.detail`.
|
|
146
|
+
|
|
119
147
|
## Settings
|
|
120
148
|
|
|
121
149
|
```json
|
|
@@ -138,20 +166,20 @@ client.get_ci(class_name: 'cmdb_ci_server', sys_id: 'abc123')
|
|
|
138
166
|
| `faraday >= 2.0` | HTTP client |
|
|
139
167
|
| `faraday-multipart >= 1.0` | Multipart upload for attachments |
|
|
140
168
|
| `legion-settings >= 1.3.14` | Settings/config |
|
|
141
|
-
| `legion-logging >= 1.3.2` |
|
|
169
|
+
| `legion-logging >= 1.3.2` | Logging |
|
|
142
170
|
| `legion-cache >= 1.3.11` | Caching |
|
|
143
171
|
| `legion-crypt >= 1.4.9` | Credential encryption |
|
|
144
172
|
| `legion-data >= 1.4.17` | ORM |
|
|
145
173
|
| `legion-json >= 1.2.1` | JSON helpers |
|
|
146
174
|
| `legion-transport >= 1.3.9` | AMQP transport |
|
|
147
175
|
|
|
148
|
-
`legion-llm` is
|
|
176
|
+
`legion-llm` is optional — skills load only if defined.
|
|
149
177
|
|
|
150
178
|
## Development
|
|
151
179
|
|
|
152
180
|
```bash
|
|
153
181
|
bundle install
|
|
154
|
-
bundle exec rspec #
|
|
182
|
+
bundle exec rspec # 372 examples, 0 failures
|
|
155
183
|
bundle exec rubocop # 0 offenses
|
|
156
184
|
```
|
|
157
185
|
|