Metadata-Version: 2.4
Name: dander-connector-servicenow
Version: 0.1.0rc1
Summary: ServiceNow Table API connector plugin for Dander.
Project-URL: Homepage, https://github.com/harrisonoconnorhover/dander-connector-servicenow
Project-URL: Issues, https://github.com/harrisonoconnorhover/dander-connector-servicenow/issues
Project-URL: Repository, https://github.com/harrisonoconnorhover/dander-connector-servicenow.git
Author: Harrison O'Connor-Hoover
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: dander,etl,servicenow,table-api
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Database
Requires-Python: >=3.12
Requires-Dist: dander-platform<0.5,>=0.4.0
Provides-Extra: dev
Requires-Dist: fastapi>=0.115; extra == 'dev'
Requires-Dist: httpx>=0.27; extra == 'dev'
Requires-Dist: mypy>=1.11; extra == 'dev'
Requires-Dist: pytest>=8.3; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Requires-Dist: types-pyyaml; extra == 'dev'
Requires-Dist: uvicorn>=0.30; extra == 'dev'
Description-Content-Type: text/markdown

# Dander ServiceNow Connector

First-party ServiceNow Table API connector plugin for
[Dander](https://github.com/harrisonoconnorhover/dander).

> **Alpha:** pin Dander and this plugin exactly. The connector is read-only and supports one
> stably ordered, full-read incident pipeline. It does not propagate source deletions.
> This candidate is simulator-validated; independent acceptance against a live ServiceNow
> tenant remains a release gate.

## Install

Declare the exact plugin version in `dander.yaml`:

```yaml
plugins:
  servicenow:
    distribution: dander-connector-servicenow
    version: 0.1.0rc1
```

Then install exactly what the manifest declares:

```console
dander plugins install
```

Copy
[`servicenow.example.yaml`](src/dander_connector_servicenow/templates/servicenow.example.yaml)
into the project's `connectors/` directory, replace `INSTANCE`, and keep the OAuth client ID and
secret in Dander's configured secret store.

## Runtime contract

- Engine: `servicenow_table`
- Authentication: Dander core's `oauth2_client_credentials` strategy
- API: ServiceNow Table API
- Endpoint: read-only `incident`
- Publication: Dander's existing SCD1 writer
- Pagination: stable full reads ordered by `(sys_updated_on, sys_id)` with bounded offset pages
- Memory: each response page is consumed through Dander's generic dlt REST runtime

The existing Dander `engine: dlt` ServiceNow configuration remains a compatibility fallback. An
explicitly pinned plugin uses the plugin-owned `servicenow_table` engine without duplicating the
generic REST transport in a system-specific package.

## Development

```console
uv sync --extra dev
uv run ruff check .
uv run mypy src tests
uv run pytest
```

Apache-2.0 licensed.
