JanssenProject / JanssenProject/jans

feat(jans-shibboleth-idp): Shibboleth IDP Trust Relationship API

Open
#13,590 9 comments 1 reaction 2 assignees Claimed by @uprightech View on GitHub
comp-jans-config-api kind-feature
Dominant language
Java
Stars
648
Forks
174
Avg merge
1d 18h
Merged PRs (30d)
110

Description

# Implement the Shibboleth IdP Trust Management REST APIs

The design is settled and the domain, adapters, DTOs, mappers, and OpenAPI contracts already exist and
are green. What remains is the **REST/transport layer**: serve the three APIs over HTTP, wired to the
existing public interfaces.

**The specification lives in the repo — read it there, not here.** This issue is intentionally thin so
it can't drift from the code; the documents are versioned alongside the contracts they describe:

- **[`README.md`](https://github.com/JanssenProject/jans/blob/issue_13590/jans-shibboleth-idp/docs/issues/README.md)**
— start here: why there are three APIs, the desired-vs-actual worker model, the trust-relationship
lifecycle, the conventions all three share (`snake_case`, `problem+json`, the `Result`/`DomainError`
contract), what already exists vs. what to build, and boot-time wiring.
- **[`trust-config-api.md`](https://github.com/JanssenProject/jans/blob/issue_13590/jans-shibboleth-idp/docs/issues/trust-config-api.md)**
— the user-facing desired-state API (`/v1/trust/config`).
- **[`trust-activation-api.md`](https://github.com/JanssenProject/jans/blob/issue_13590/jans-shibboleth-idp/docs/issues/trust-activation-api.md)**
— the worker/M2M reconciliation API (`/v1/trust/activation`).
- **[`file-staging-api.md`](https://github.com/JanssenProject/jans/blob/issue_13590/jans-shibboleth-idp/docs/issues/file-staging-api.md)**
— the out-of-band file byte-transfer service (`/v1/files`).

The wire contracts under **`openapi/`** and the Java public interfaces named in those docs are the
source of truth; where a doc and the code disagree, the code wins.

## Scope

- [ ] Serve every operation in all three `openapi/*.yaml` contracts.
- [ ] One central `Result`/`DomainError` → `problem+json` translator (per-API status/code tables in
the docs), covered by tests.
- [ ] Bearer/OAuth2 auth with the correct audience/scope per API.
- [ ] Boot wiring: single `PersistenceEntryManager`, repositories, `WorkOrchestrator`, the
`FinalizeActivationPort` bridge, and the `sweepExpiredLeases` scheduler.
- [ ] Contract + translator + env-gated HTTP integration tests pass; the offline build stays green.

> Note the one open item flagged in the file-staging doc: `FileStagingService.claim(...)` returns only
> a `Handle`, but the `ClaimResult` response needs the claimed `StagedFile` — decide whether to
> re-fetch in transport or extend the service.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.