Know of an official OpenAPI document? Contribute it →
For Agents
Ask FIAM-KPN whether a subject may perform actions on a resource, validate a data-sharing contract, and look up registered parties and data spaces. Service providers can also create and maintain the access contracts behind those decisions.
Use for: Check whether this subject is allowed to read the shipment API resource, Validate that a data consumer has a contract to access this resource, Search for registered parties with a given EORI number, List all contracts my organisation holds as a service consumer
Not supported: Does not handle end-user login, user directory management, or storage of the shared data itself. Use for data-space authorization decisions, contract checks, and party registry lookups only.
The FIAM-KPN API evaluates access requests for data-space participants and returns a permit, deny, or notApplicable decision with the policies that matched. It also validates data-sharing contracts between a data owner and a consumer, searches the party registry by name, EORI, role, or data space, and lets service providers create, update, and delete the contracts that govern access to their resources. Clients obtain a JWT bearer token from the token endpoint with a signed client assertion before calling the protected operations.
Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the FIAM-KPN, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fkpn.com%2Fkpn" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fkpn.com%2Fkpn" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with FIAM-KPN API.
Request an authorization decision for a subject, resources, actions, and resource_type and receive permit, deny, or notApplicable with the matched policies
Validate whether a data consumer's token grants a given action on a data owner's resource through an existing contract
Search the party registry by name, eori, role, dataSpaceID, or certified_only and page through the results
Create, update, and delete service-provider contracts that set the data_owner, service_consumer, resource, action, and validity dates
List the contracts a service consumer holds and read any single contract by its id
List the data spaces registered in the trust framework with their countries of operation
Patterns agents use FIAM-KPN API for, with concrete tasks.
★ Policy Decision Point for an Agent Gateway
Before an agent forwards a request to a protected data service, it asks FIAM-KPN for an authorization decision. The enforce operation takes the subject, the resources and actions requested, and the resource_type, and returns a decision of permit, deny, or notApplicable together with a decisionId, the matched policies, and an optional explanation, so the gateway can allow or block the call and log why.
Call POST /api/v1/authorization/enforce with subject 'did:example:consumer-42', resources ['shipments'], actions ['read'], and resource_type 'API', then allow the downstream call only if the decision is 'permit'
Contract-Based Data Sharing Checks
Data owners share resources with consumers under explicit contracts. A service provider creates a contract naming the data_owner, service_consumer, resource, resource_type, action, and start and end dates, and later the contract validation operation confirms whether a consumer's data_consumer_token is allowed to perform an action on that resource, returning a simple allowed flag.
Create a contract with POST /api/v1/service-providers/contracts for a data_owner and service_consumer with start_date and end_date, then call POST /api/v1/contracts/validate with the consumer's data_consumer_token and confirm allowed is true
Party Registry Lookup
Onboarding and due-diligence flows need to confirm who a counterparty is. The party search accepts filters such as name, eori, role, certified_only, active_only, and dataSpaceID, so an agent can find a registered organisation, check its adherence status, and then read the full record with the party id.
Call GET /api/v1/parties with eori 'NL123456789' and active_only true, then GET /api/v1/parties/{party_id} for the first match to read its roles and adherence
AI Agent Access Governance via Jentic
An agent reaches FIAM-KPN through Jentic without wiring the client-assertion token exchange by hand. It searches by intent, receives the enforce or contract operation with its input schema, and runs it with the bearer token injected at execution time, so authorization checks become one step in a larger data-exchange workflow.
Search Jentic for 'check if a subject is authorized for a resource', load the enforce_authorization_post schema, and execute it with the subject, resources, actions, and resource_type
16 endpoints — the fiam-kpn api evaluates access requests for data-space participants and returns a permit, deny, or notapplicable decision with the policies that matched.
METHOD
PATH
DESCRIPTION
/api/v1/authorization/enforce
Request an authorization decision
/api/v1/contracts/validate
Validate contract access for a consumer
/api/v1/parties
Search registered parties
/api/v1/parties/{party_id}
Get a party
/api/v1/service-providers/contracts
Create a contract
/api/v1/service-providers/contracts/{contract_id}
Update a contract
/api/v1/dataspaces
List data spaces
/api/v1/oauth/token
Obtain an access token
/api/v1/authorization/enforce
Request an authorization decision
/api/v1/contracts/validate
Validate contract access for a consumer
/api/v1/parties
Search registered parties
/api/v1/parties/{party_id}
Get a party
/api/v1/service-providers/contracts
Create a contract
/api/v1/service-providers/contracts/{contract_id}
Update a contract
/api/v1/dataspaces
List data spaces
/api/v1/oauth/token
Obtain an access token
This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.
Base layer of spec validity and structural soundness.
Aggregated quality score from linter diagnostics, weighted by severity.
Percentage of `$ref` references that resolve successfully.
Checks whether the API description parses successfully and conforms to its declared specification (e.g., OpenAPI).
Structural correctness score based on schema issues using logarithmic dampening.
Clarity, completeness, and ingestion readiness for developers and tooling.
How richly the API is illustrated with examples.
Percentage of examples that conform to their schemas.
Percentage of operations with complete response definitions (success, client error, server error).
Health of API ingestion, bundling, and resolution within Jentic pipelines.
Semantic breadth, depth, and agent comprehension for AI systems.
Coverage of descriptions across API elements.
Coverage of RFC 9457 Problem Details for error responses.
Coverage, uniqueness, and casing consistency of operationIds for AI inference.
Coverage of summaries across operations/tags/info.
Functional utility, complexity comfort, and AI orchestration readiness.
Agent comfort level based on API operational and structural complexity.
Trust, risk posture, and security compliance.
Average quality of security schemes based on authentication method strength (weakest link for OAuth2).
Findability, semantic richness, and reasoning readiness.
Clarity and depth of descriptions across API elements.
Score it yourself
Every API in the directory is allowlisted, so you can re-score it with no key required.
npx @jentic/api-scorecard-cli score <openapi-url>What agents get from Jentic-routed access to this vendor.
Setup
Wiring FIAM-KPN by hand means signing a client_assertion JWT with your certificate, exchanging it at the token endpoint, and refreshing the bearer token before each protected call. Through Jentic you install once, import FIAM-KPN from the API Directory, store the credential once, and your agent calls it.
Permission scoping
FIAM-KPN puts the contract id in the URL path (/api/v1/service-providers/contracts/{contract_id}), so a rule can pin your agent to one contract and the operations you pick. You choose that set, so destructive ones like contract deletion or party creation are not included unless you add them.
Credential isolation
Your FIAM-KPN credential is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
Intent-based discovery
Agents search Jentic by intent such as 'check if a subject is authorized' or 'search the party registry', and Jentic returns the matching FIAM-KPN operation with its input schema so the agent calls the right endpoint without browsing the reference docs.
Alternatives and complements available in the Jentic catalogue.
Specific to using FIAM-KPN API through Jentic.
What authentication does the FIAM-KPN API use?
Per its OpenAPI spec, the FIAM-KPN API uses the bearer_auth scheme: a JWT bearer token in the Authorization header. You get the token from POST /api/v1/oauth/token by sending grant_type, scope, client_id, client_assertion_type, and a client_assertion JWT signed with your client certificate. Through Jentic the credential is stored encrypted by your own Jentic One instance and injected at execution time.
Can I get an authorization decision with the FIAM-KPN API?
Yes. Send subject, resources, actions, and resource_type to the enforce operation, as query parameters on GET or as a JSON body on POST, with optional attributes, issuer, service_provider, and license. The response carries a decision of permit, deny, or notApplicable, a decisionId, the matchedPolicies, an evaluationTimeMs value, and an optional explanation.
What are the rate limits for the FIAM-KPN API?
The OpenAPI spec does not specify rate limits. Check the published FIAM-KPN definition at https://app.swaggerhub.com/apis/kpn/FIAM-KPN/0.1.1 or ask KPN for the limits that apply to your client.
How do I check a consumer's contract access through Jentic with the FIAM-KPN API?
Search Jentic for 'validate a data sharing contract' and it returns the validate_contract_access operation with its input schema. Execute POST /api/v1/contracts/validate with data_owner, data_consumer_token, resource_type, resource_attribute, resource, and action, and read the allowed flag. To run it on your own infrastructure, install Jentic One from its GitHub repo.
Is there a FIAM-KPN MCP server?
You don't need an MCP server to give your agent the FIAM-KPN API. Jentic connects it directly from the API Directory: import it, store your credential once, and your agent calls it. Operations are found by intent when needed, so no extra tool definitions sit in the agent's context.
Can I limit what my agent is allowed to do with the FIAM-KPN API?
Yes. A rule that allows only the enforce and contract-validation operations lets your agent ask for decisions and check contract access while it cannot create or delete contracts. If the agent should maintain one agreement, allow GET and PUT on that single contract id and nothing else. Every call goes through your own instance and is logged.
GET STARTED