DIPS Federation Service

DIPS Federation Service (DFS) is the OpenID Connect provider and OAuth 2.0 authorization server in front of every Open DIPS API. Built on IdentityServer4 and certified by the OpenID Foundation, it supports authorization code, hybrid and implicit OpenID Connect flows plus SAML 2.0 and JWT bearer assertion grants and DIPS-specific user-role and patient-access-check grants.

Operations 25

POST /consent Account consent page #
GET /connect/authorize Authorize #
POST /* Callback wildcard #
GET /* Get client resources #
GET /connect/authorize/callback Callback #
GET /connect/endsession/callback Callback #
POST /connect/endsession/callback Callback #
GET /connect/endsession End session #
POST /connect/endsession End session #
GET /home/error Error #
GET /status/health Health #
GET /account/login Login #
POST /account/login Login #
GET /account/logout Logout #
POST /account/logout Logout #
GET /.well-known/openid-configuration OpenID Connect Discovery Document #
GET /status/ping Ping #
GET /login/resume Resume Login #
GET /.well-known/openid-configuration/jwks Returns the Identity Server's public key set in the JWKS format #
POST /connect/revocation Revocation #
POST /userrole/selectuserrole Select user role #
POST /connect/token Token #
GET /userrole User Roles #
GET /connect/userinfo Userinfo #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dips-federation-service"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dips-federation-service-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: DIPS Federation Service
  version: '1.0'
  description: "DIPS Federation Service (DFS)  is a OpenID Connect provider. We recommend\nthat you authenticate with DFS\
    \ using one of the [certified libraries for\nyour programming language](https://openid.net/developers/certified)\n\nThe\
    \ current version of DIPS Federation Service supports the following OAuth 2.0 and OpenID Connect\ngrants:\n- OpenID Connect,\
    \ Authentication Code flow\n- OpenID Connect, Hybrid flow \n- OpenID Connect, Implicit flow \n\nThese grant types are\
    \ well documented, as they are official specifications.\nIdentityServer4, the API on which DIPS Federation Service is\
    \ built, is certified\nby the OpenID Foundation. \n\nIn addition, DIPS Federation Service supports the following custom\
    \ grant types:\n\n- Assertion Framework for OAuth 2.0 Client Authentication and Authentication Grants\n- Security Assertion\
    \ Markup Language (SAML) 2.0 Profile for OAuth 2.0 Client\n  Authentication and Authentication Grants \n- DIPS User Role\
    \ Grant\n- DIPS Patient Access Check Grant\n- DIPS Client Refresh Grant\n"
  contact:
    name: DIPS AS
    url: https://dips.developer.azure-api.net/
    email: open@dips.no
  termsOfService: https://dips.developer.azure-api.net/terms
servers:
- url: https://api.dips.no/dips.oauth
paths:
  /consent:
    post:
      operationId: consent-post
      summary: Account consent page
      description: Account consent page
      responses:
        '302':
          description: Redirect to next step.
    get:
      operationId: consent
      summary: Consent
      description: Returns the consent web page used to log users in.
      responses:
        '200':
          description: The web page where users can give consent
  /connect/authorize:
    get:
      operationId: authorize
      summary: Authorize
      description: The /authorize endpoint is used to obtain an authorization grant. This is the starting point for browser-based
        OpenID Connect flows.
      parameters:
      - name: client_id
        in: query
        required: true
        schema:
          type: string
      - name: redirect_uri
        in: query
        required: true
        schema:
          type: string
      - name: response_type
        in: query
        required: true
        schema:
          type: string
      - name: scope
        in: query
        required: true
        schema:
          type: string
      - name: state
        in: query
        required: false
        schema:
          type: string
      responses:
        '302':
          description: "The authorization request was successful. The authorization server \nredirects the user-agent to the\
            \ client's redirection endpoint."
          headers:
            Location:
              schema:
                type: string
  /*:
    post:
      operationId: post-wildcard-callbacks
      summary: Callback wildcard
      description: Used to enable several external IDP integrations for DFS
      responses:
        '200':
          description: Indicates that the operation was successful
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Post200TextPlainResponse'
              examples:
                default:
                  value: null
    get:
      operationId: get-client-resources
      summary: Get client resources
      description: Get resources such as scripts, stylesheets and images for the DFS web client
      responses:
        '200':
          description: Any requested resource
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Get200TextPlainResponse'
              examples:
                default:
                  value: null
  /connect/authorize/callback:
    get:
      operationId: callback
      summary: Callback
      description: Callback to authorize
      responses:
        '302':
          description: Response
  /connect/endsession/callback:
    get:
      operationId: endsession-callback-get
      summary: Callback
      description: Callback from endsession
      responses:
        '200':
          description: OK
    post:
      operationId: endsession-callback-post
      summary: Callback
      description: Callback from endsession
      responses:
        '200':
          description: OK
  /connect/endsession:
    get:
      operationId: endsession
      summary: End session
      description: The /endsession endpoint is used to end a users session. The /endsession endpoint can also be used to trigger
        single sign-out.
      parameters:
      - name: id_token_hint
        in: query
        required: false
        schema:
          type: string
        description: RECOMMENDED. ID Token previously issued by the Federation Service to the Relying Party (RP) passed to
          the Logout Endpoint as a hint about the End-User's current authenticated session with the Client. This is used as
          an indication of the identity of the End-User that the RP is requesting be logged out by the OP.
      - name: post_logout_redirect_uri
        in: query
        required: false
        schema:
          type: string
        description: If a valid id_token_hint is passed, then the client may also send a post_logout_redirect_uri parameter.
          This can be used to allow the user to redirect back to the client after sign-out. The value must match one of the
          clients pre-configured PostLogoutRedirectUris.
      - name: state
        in: query
        required: false
        schema:
          type: string
        description: If a valid post_logout_redirect_uri is passed, then the client may also send a state parameter. This
          will be returned back to the client as a query string parameter after the user redirects back to the client. This
          is typically used by clients to round-trip state across the redirect.
      responses:
        '200':
          description: User session successfully ended.
    post:
      operationId: endsession-post
      summary: End session
      description: The /endsession endpoint is used to end a users session. The /endsession endpoint can also be used to trigger
        single sign-out.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id_token_hint:
                  type: string
                post_logout_redirect_uri:
                  type: string
                state:
                  type: string
      responses:
        '200':
          description: User session successfuly ended.
  /home/error:
    get:
      operationId: error
      summary: Error
      description: Returns the error web page upon any errors in the sign in process.
      responses:
        '200':
          description: A web page with an error.
  /status/health:
    get:
      operationId: health
      summary: Health
      description: Get the health of the server. This is a more in depth check than the ping and will return information of
        the services dependencies and their health.
      responses:
        '200':
          description: In depth health of the service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusHealthGet200ApplicationJsonResponse'
              examples:
                default:
                  value:
                    status: string
                    statuscode: 0
                    timestamp: string
                    duration: string
                    host: string
                    checks:
                    - status: string
                      statuscode: 0
                      timestamp: string
                      duration: string
                      host: string
                      checks:
                      - name: string
                        status: string
                        statuscode: 0
                        timestamp: string
                        duration: string
  /account/login:
    get:
      operationId: login
      summary: Login
      description: Returns the log in web page used to log users in.
      responses:
        '200':
          description: The sign-on page where users can log in
    post:
      operationId: login-post-usernamepassword
      summary: Login
      description: Log in with a username and password
      parameters:
      - name: ReturnUrl
        in: query
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                Username:
                  type: string
                Password:
                  type: string
                IsPartialLogin:
                  type: string
                ReturnUrl:
                  type: string
      responses:
        '302':
          description: Response
  /account/logout:
    get:
      operationId: logout-get
      summary: Logout
      description: User log out endpoint
      responses:
        '200':
          description: Logout successful
    post:
      operationId: logout
      summary: Logout
      description: User log out endpoint
      responses:
        '200':
          description: Logout successful
  /.well-known/openid-configuration:
    get:
      operationId: openid-configuration
      summary: OpenID Connect Discovery Document
      description: 'The /.well-known/openid-configuration endpoint returns the OpenID Connect

        metadata about the authorization server. This information can be used by

        clients to configure their interactions with the DIPS Federation

        Service.'
      responses:
        '200':
          description: The OpenID Connect configuration was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/well-knownOpenid-configurationGet200ApplicationJsonResponse'
              examples:
                default:
                  value:
                    issuer: string
                    authorization_endpoint: string
                    token_endpoint: string
                    userinfo_endpoint: string
                    jwks_uri: string
                    response_types_supported:
                    - string
                    subject_types_supported:
                    - string
                    id_token_signing_alg_values_supported:
                    - string
                    scopes_supported:
                    - string
                    token_endpoint_auth_methods_supported:
                    - string
                    response_modes_supported:
                    - string
                    grant_types_supported:
                    - string
                    acr_values_supported:
                    - string
                    userinfo_signing_alg_values_supported:
                    - string
                    userinfo_encryption_alg_values_supported:
                    - string
                    userinfo_encryption_enc_values_supported:
                    - string
                    id_token_encryption_alg_values_supported:
                    - string
                    id_token_encryption_enc_values_supported:
                    - string
                    request_object_signing_alg_values_supported:
                    - string
  /status/ping:
    get:
      operationId: get-status-ping
      summary: Ping
      description: Ping the server to see if it is alive
      responses:
        '200':
          description: If everything is working correctly, the server will respond with "OK"
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/StatusPingGet200TextPlainResponse'
              examples:
                default:
                  value: null
  /login/resume:
    get:
      operationId: resume
      summary: Resume Login
      description: Resume login flow
      parameters:
      - name: resume
        in: query
        required: true
        schema:
          type: string
      responses:
        '302':
          description: The sign-on page where users can log in
  /.well-known/openid-configuration/jwks:
    get:
      operationId: getjwks
      summary: Returns the Identity Server's public key set in the JWKS format
      description: Returns the Identity Server's public key set in the JWKS format
      responses:
        '200':
          description: The public key set in JWKS format
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/well-knownOpenid-configurationJwksGet200ApplicationJsonResponse'
              examples:
                default:
                  value:
                    keys:
                    - string
  /connect/revocation:
    post:
      operationId: revocation
      summary: Revocation
      description: 'The /revocation endpoint is used to revoke access token (reference tokens only) and refresh token.

        Implements token revocation according to spesification RFC 7009.'
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                token:
                  type: string
                token_type_hint:
                  type: string
      responses:
        '200':
          description: Token was revoked.
        '400':
          description: The request was malformed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectRevocationPost400ApplicationJsonResponse'
              examples:
                default:
                  value:
                    error: string
  /userrole/selectuserrole:
    post:
      operationId: selectuserrole
      summary: Select user role
      description: Select user role
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                UserRoleId:
                  type: number
      responses:
        '200':
          description: Successful selection of a user role.
  /connect/token:
    post:
      operationId: token
      summary: Token
      description: The /token endpoint performs the token exchange.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                grant_type:
                  type: string
                  enum:
                  - authorization_code
                code:
                  type: string
                redirect_uri:
                  type: string
      responses:
        '200':
          description: The token exchange was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectTokenPost200ApplicationJsonResponse'
              examples:
                default:
                  value:
                    access_token: string
                    token_type: string
                    expires_in: 0
                    refresh_token: string
                    scope: string
                    id_token: string
                    state: string
        '400':
          description: The request was malformed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectTokenPost400ApplicationJsonResponse'
              examples:
                default:
                  value:
                    error: string
                    error_description: string
  /userrole:
    get:
      operationId: userroles
      summary: User Roles
      description: Get user roles
      responses:
        '302':
          description: Response
  /connect/userinfo:
    get:
      operationId: userinfo
      summary: Userinfo
      description: Get information about a user
      responses:
        '200':
          description: Information about user
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ConnectUserinfoGet200TextPlainResponse'
              examples:
                default:
                  value: null
components:
  schemas:
    ProductHealth:
      properties:
        name:
          type: string
        status:
          type: string
        statuscode:
          type: integer
        result:
          type: string
        timestamp:
          type: string
        duration:
          type: string
        data:
          type: object
          properties:
            product.version:
              type: string
            product.name:
              type: string
    DatabaseHealth:
      properties:
        status:
          type: string
        statuscode:
          type: integer
        timestamp:
          type: string
        duration:
          type: string
        host:
          type: string
        checks:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              status:
                type: string
              statuscode:
                type: integer
              timestamp:
                type: string
              duration:
                type: string
    AccountLoginPostRequest:
      type: string
      x-apim-inline: true
    LoginResumeGetRequest:
      type: string
      x-apim-inline: true
    ConnectAuthorizeGetRequest:
      type: string
      x-apim-inline: true
    ConnectAuthorizeGetRequest-1:
      type: string
      x-apim-inline: true
    ConnectAuthorizeGetRequest-2:
      type: string
      x-apim-inline: true
    ConnectAuthorizeGetRequest-3:
      type: string
      x-apim-inline: true
    ConnectAuthorizeGetRequest-4:
      type: string
      x-apim-inline: true
    ConnectAuthorizeGet302LocationResponseHeader:
      type: string
      x-apim-inline: true
    ConnectEndsessionGetRequest:
      type: string
      x-apim-inline: true
    ConnectEndsessionGetRequest-1:
      type: string
      x-apim-inline: true
    ConnectEndsessionGetRequest-2:
      type: string
      x-apim-inline: true
    ConnectRevocationPost400ApplicationJsonResponse:
      type: object
      properties:
        error:
          type: string
      x-apim-inline: true
    ConnectTokenPost200ApplicationJsonResponse:
      type: object
      properties:
        access_token:
          type: string
        token_type:
          type: string
        expires_in:
          type: integer
        refresh_token:
          type: string
        scope:
          type: string
        id_token:
          type: string
        state:
          type: string
      x-apim-inline: true
    ConnectTokenPost400ApplicationJsonResponse:
      type: object
      properties:
        error:
          type: string
        error_description:
          type: string
      x-apim-inline: true
    well-knownOpenid-configurationGet200ApplicationJsonResponse:
      type: object
      properties:
        issuer:
          type: string
        authorization_endpoint:
          type: string
        token_endpoint:
          type: string
        userinfo_endpoint:
          type: string
        jwks_uri:
          type: string
        response_types_supported:
          type: array
          items:
            type: string
        subject_types_supported:
          type: array
          items:
            type: string
        id_token_signing_alg_values_supported:
          type: array
          items:
            type: string
        scopes_supported:
          type: array
          items:
            type: string
        token_endpoint_auth_methods_supported:
          type: array
          items:
            type: string
        response_modes_supported:
          type: array
          items:
            type: string
        grant_types_supported:
          type: array
          items:
            type: string
        acr_values_supported:
          type: array
          items:
            type: string
        userinfo_signing_alg_values_supported:
          type: array
          items:
            type: string
        userinfo_encryption_alg_values_supported:
          type: array
          items:
            type: string
        userinfo_encryption_enc_values_supported:
          type: array
          items:
            type: string
        id_token_encryption_alg_values_supported:
          type: array
          items:
            type: string
        id_token_encryption_enc_values_supported:
          type: array
          items:
            type: string
        request_object_signing_alg_values_supported:
          type: array
          items:
            type: string
      x-apim-inline: true
    well-knownOpenid-configurationJwksGet200ApplicationJsonResponse:
      type: object
      properties:
        keys:
          type: array
          items:
            type: string
      x-apim-inline: true
    Get200TextPlainResponse:
      type: string
      x-apim-inline: true
    Post200TextPlainResponse:
      type: string
      x-apim-inline: true
    ConnectUserinfoGet200TextPlainResponse:
      type: string
      x-apim-inline: true
    StatusPingGet200TextPlainResponse:
      type: string
      x-apim-inline: true
    StatusHealthGet200ApplicationJsonResponse:
      type: object
      properties:
        status:
          type: string
        statuscode:
          type: integer
        timestamp:
          type: string
        duration:
          type: string
        host:
          type: string
        checks:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/DatabaseHealth'
            - $ref: '#/components/schemas/ProductHealth'
      x-apim-inline: true
  securitySchemes:
    apiKeyHeader:
      type: apiKey
      name: Ocp-Apim-Subscription-Key
      in: header
    apiKeyQuery:
      type: apiKey
      name: subscription-key
      in: query
    openIdConnect:
      type: openIdConnect
      openIdConnectUrl: https://api.dips.no/dips.oauth/.well-known/openid-configuration
x-api-evangelist:
  generated: '2026-09-02'
  method: derived
  source: https://dips.developer.azure-api.net/developer/apis/dips_federation_service_prod/operations?api-version=2022-04-01-preview
  note: 'Assembled verbatim from DIPS AS''s own Azure API Management developer-portal metadata API (Open DIPS, https://dips.developer.azure-api.net).
    The portal''s anonymous OpenAPI export (saved in openapi/_original/) returns info+servers but an empty paths object; the
    25 operations, their request/response representations and the 23 component schemas here were read one-for-one from the
    portal''s /developer/apis/{id}/operations and /developer/apis/{id}/schemas endpoints on 2026-09-02. Nothing was invented.
    Ownership: servers[] https://api.dips.no/dips.oauth, info.contact DIPS AS <open@dips.no>, portal branded ''Open DIPS''
    by DIPS AS.'