Skip to content

feat: add admin consent endpoint for DIAL_NATIVE services - #1820

Merged
DmytroZaichenkoDev merged 2 commits into
developmentfrom
feat/dial-native-admin-consent
Aug 12, 2026
Merged

feat: add admin consent endpoint for DIAL_NATIVE services#1820
DmytroZaichenkoDev merged 2 commits into
developmentfrom
feat/dial-native-admin-consent

Conversation

@DmytroZaichenkoDev

Copy link
Copy Markdown
Contributor

Part 3/4 of the offline-delegation split (replaces #1815). Based on #1819.

An administrator approves an application's use of a DIAL-native service via POST/DELETE /v1/applications/{appId}/external-services/{id}/consent. The approval is a record in the APPLICATION-level credentials slot; the audit event records who decided. Any write that changes a service's authentication_type now purges the old APPLICATION-level record, so a leftover credential can never pass as an approval. Admin-only, audited including refusals.

🤖 Generated with Claude Code

@DmytroZaichenkoDev
DmytroZaichenkoDev force-pushed the feat/dial-native-admin-consent branch from 39e2f55 to 38d62c8 Compare August 11, 2026 13:38
@DmytroZaichenkoDev
DmytroZaichenkoDev force-pushed the feat/dial-native-admin-consent branch from 38d62c8 to 9fe0a14 Compare August 11, 2026 14:44
@ai-dial-actions

This comment has been minimized.

@ai-dial-actions

This comment has been minimized.

astsiapanay
astsiapanay previously approved these changes Aug 12, 2026
@ai-dial-actions

This comment has been minimized.

@DmytroZaichenkoDev
DmytroZaichenkoDev force-pushed the feat/dial-native-admin-consent branch from caca038 to 0a1a2ad Compare August 12, 2026 13:00
@ai-dial-actions

This comment has been minimized.

Base automatically changed from feat/offline-credentials-endpoints to development August 12, 2026 13:16
Dmytro Zaichenko and others added 2 commits August 12, 2026 16:16
An administrator approves an application's use of a DIAL-native service via
POST/DELETE /v1/applications/{appId}/external-services/{id}/consent. The
approval is a credential record in the APPLICATION-level slot — its existence
is the consent, the audit event records who decided. Because that slot holds
ordinary credentials while a service is OAUTH/API_KEY, any write that changes
a service's authentication_type now purges the old APPLICATION-level record,
so a leftover credential can never pass as an approval, and client secrets
are never carried across a type change. Consent operations are admin-only
and audited, including refusals.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Both credential writes ended in the same encrypt + put sequence; extracted
storeEncrypted so putCredentialsRecord and addResourceCredentials share it.

Also pins with a test that the consent route and the management route can
never cross-match: the service id disallows '/', both patterns are anchored,
and even an app path containing an external-services segment or a service
named 'consent' stays on its own route.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@DmytroZaichenkoDev
DmytroZaichenkoDev force-pushed the feat/dial-native-admin-consent branch from 0a1a2ad to bd0244c Compare August 12, 2026 13:16
@DmytroZaichenkoDev
DmytroZaichenkoDev merged commit c90bd9e into development Aug 12, 2026
9 checks passed
@DmytroZaichenkoDev
DmytroZaichenkoDev deleted the feat/dial-native-admin-consent branch August 12, 2026 13:24
@ai-dial-actions

Copy link
Copy Markdown
Contributor

⚠️ Dependency review workflow failed - results may be outdated. Check logs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants