Canonical Idps Service API

The IdpsService API from Canonical — 2 operation(s) for idpsservice.

Operations 5

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /api/v0/idps List configured identity providers · Idps service list idps #
Ask an LLM
“Which external identity providers are set up for sign-in?”
“Can I see every social or OIDC login provider configured in the admin?”
Tell an agent
List all configured identity providers.
Show me every login provider set up in the identity platform.
POST /api/v0/idps Add an identity provider · Idps service create idp #
Ask an LLM
“How do I connect a new OIDC identity provider for sign-in?”
“Can I configure Sign in with Apple using a team ID and private key?”
Tell an agent
Add identity provider {provider} with client ID {client_id} and secret {client_secret}.
Create an OIDC provider labeled {label} with issuer {issuer_url} and scopes {scope}.
DELETE /api/v0/idps/{id} Remove an identity provider · Idps service remove idp #
Ask an LLM
“How do I disconnect a login provider users should no longer sign in with?”
“Can I delete an identity provider configuration?”
Tell an agent destructive · confirm first
Remove identity provider {id}.
Delete the login provider {id}.
GET /api/v0/idps/{id} Get one identity provider · Idps service get idp #
Ask an LLM
“What client ID and issuer is a particular identity provider using?”
“Can I look up a single login provider by its ID?”
Tell an agent
Show identity provider {id}.
Get the configuration of login provider {id}.
PATCH /api/v0/idps/{id} Update an identity provider · Idps service update idp #
Ask an LLM
“How do I rotate the client secret on an existing identity provider?”
“Can I change the scopes or mapper URL for a configured provider?”
Tell an agent
Update provider {id} with client secret {client_secret}.
Change identity provider {id} to request scopes {scope} and use mapper {mapper_url}.

Documentation

Specifications

Schemas & Data

Other Resources

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/canonical:canonical-idpsservice-api"
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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

canonical-idpsservice-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    name: Identity Platform API
    url: https://github.com/canonical/identity-platform-api
  description: REST API for the Admin UI service
  license:
    name: AGPL-3.0
    url: https://github.com/canonical/identity-platform-api/blob/main/LICENSE
  title: Identity Platform Idps Service API
  version: '0.1'
tags:
- name: IdpsService
paths:
  /api/v0/idps:
    get:
      operationId: IdpsService_ListIdps
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/idpsListIdpsResp'
          description: ''
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Forbidden
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Internal server error
      tags:
      - IdpsService
      summary: Idps service list idps
      x-summary-source: derived
    post:
      operationId: IdpsService_CreateIdp
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/idpsCreateIdpBody'
        required: true
        x-originalParamName: idp
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/idpsCreateIdpResp'
          description: ''
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Bad request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Forbidden
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Internal server error
      tags:
      - IdpsService
      summary: Idps service create idp
      x-summary-source: derived
  /api/v0/idps/{id}:
    delete:
      operationId: IdpsService_RemoveIdp
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/idpsRemoveIdpResp'
          description: ''
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Forbidden
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Internal server error
      tags:
      - IdpsService
      summary: Idps service remove idp
      x-summary-source: derived
    get:
      operationId: IdpsService_GetIdp
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/idpsGetIdpResp'
          description: ''
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Forbidden
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Internal server error
      tags:
      - IdpsService
      summary: Idps service get idp
      x-summary-source: derived
    patch:
      operationId: IdpsService_UpdateIdp
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/idpsUpdateIdpBody'
        required: true
        x-originalParamName: idp
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/idpsUpdateIdpResp'
          description: ''
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Bad request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Not found
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/typesErrorResponse'
          description: Internal server error
      tags:
      - IdpsService
      summary: Idps service update idp
      x-summary-source: derived
components:
  schemas:
    idpsListIdpsResp:
      properties:
        data:
          items:
            $ref: '#/components/schemas/idpsIdp'
          type: array
        message:
          type: string
        status:
          format: int32
          type: integer
      type: object
    idpsUpdateIdpResp:
      properties:
        data:
          items:
            $ref: '#/components/schemas/idpsIdp'
          type: array
        message:
          type: string
        status:
          format: int32
          type: integer
      type: object
    idpsCreateIdpBody:
      properties:
        apple_private_key:
          type: string
        apple_private_key_id:
          type: string
        apple_team_id:
          type: string
        auth_url:
          type: string
        client_id:
          type: string
        client_secret:
          type: string
        id:
          type: string
        issuer_url:
          type: string
        label:
          type: string
        mapper_url:
          type: string
        microsoft_tenant:
          type: string
        provider:
          type: string
        requested_claims:
          type: string
        scope:
          items:
            type: string
          type: array
        subject_source:
          type: string
        token_url:
          type: string
      type: object
    typesErrorResponse:
      properties:
        message:
          type: string
        status:
          format: int32
          type: integer
      type: object
    idpsIdp:
      properties:
        apple_private_key:
          type: string
        apple_private_key_id:
          type: string
        apple_team_id:
          type: string
        auth_url:
          type: string
        client_id:
          type: string
        client_secret:
          type: string
        id:
          type: string
        issuer_url:
          type: string
        label:
          type: string
        mapper_url:
          type: string
        microsoft_tenant:
          type: string
        provider:
          type: string
        requested_claims:
          type: string
        scope:
          items:
            type: string
          type: array
        subject_source:
          type: string
        token_url:
          type: string
      type: object
    idpsRemoveIdpResp:
      properties:
        message:
          type: string
        status:
          format: int32
          type: integer
      type: object
    idpsUpdateIdpBody:
      properties:
        apple_private_key:
          type: string
        apple_private_key_id:
          type: string
        apple_team_id:
          type: string
        auth_url:
          type: string
        client_id:
          type: string
        client_secret:
          type: string
        id:
          type: string
        issuer_url:
          type: string
        label:
          type: string
        mapper_url:
          type: string
        microsoft_tenant:
          type: string
        provider:
          type: string
        requested_claims:
          type: string
        scope:
          items:
            type: string
          type: array
        subject_source:
          type: string
        token_url:
          type: string
      type: object
    idpsCreateIdpResp:
      properties:
        data:
          items:
            $ref: '#/components/schemas/idpsIdp'
          type: array
        message:
          type: string
        status:
          format: int32
          type: integer
      type: object
    idpsGetIdpResp:
      properties:
        data:
          items:
            $ref: '#/components/schemas/idpsIdp'
          type: array
        message:
          type: string
        status:
          format: int32
          type: integer
      type: object
  securitySchemes:
    OAuth2:
      flows:
        authorizationCode:
          authorizationUrl: https://example.com/oauth/authorize
          scopes:
            email: ''
            openid: ''
            profile: ''
          tokenUrl: https://example.com/oauth/token
      type: oauth2
externalDocs:
  description: REST API for the Admin UI service
  url: https://github.com/canonical/identity-platform-admin-ui/blob/main/API.md