Elastic Path OIDC Profiles API

An OpenID Connect Profile resource represents a specific configuration of an OpenID Connect Provider. An authentication realm can have multiple OpenID Connect Profiles. This allows shoppers to authenticate using multiple OpenID providers. In the example shown below, Jane can login using both Apple and Google, whereas Joan can only login using Google. ![oidc profiles](/assets/oidc-profiles.png)

OpenAPI Specification

elastic-path-oidc-profiles-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 25.1126.6886238
  x-version-timestamp: 2025-11-26 19:10:23+00:00
  title: Addresses Introduction Account Addresses OIDC Profiles API
  description: 'The Addresses API allows you to organize account addresses. Addresses are a sub-resource of `account` resources, an account can have multiple addresses, such as home, work, and neighbour.


    You can use an account address with either [client_credentials access token](/docs/api/authentication/create-an-access-token) or a combination of [implicit access token](/docs/api/authentication/create-an-access-token) and [Account Management authentication](/docs/api/accounts/post-v-2-account-members-tokens) token.

    '
  contact:
    name: Elastic Path
    url: https://www.elasticpath.com
    email: support@elasticpath.com
  license:
    url: https://elasticpath.dev
    name: MIT
servers:
- url: https://useast.api.elasticpath.com
  description: US East
- url: https://euwest.api.elasticpath.com
  description: EU West
security:
- BearerToken: []
tags:
- name: OIDC Profiles
  description: 'An OpenID Connect Profile resource represents a specific configuration of an OpenID Connect Provider.


    An authentication realm can have multiple OpenID Connect Profiles. This allows shoppers to authenticate using multiple OpenID providers. In the example shown below, Jane can login using both Apple and Google, whereas Joan can only login using Google.


    ![oidc profiles](/assets/oidc-profiles.png)

    '
paths:
  /v2/authentication-realms/{realmId}/oidc-profiles:
    post:
      tags:
      - OIDC Profiles
      summary: Create an OIDC Profile
      description: Create an OpenID Connect profile for the specified authentication realm.
      operationId: post-v2-authentication-realms-realmId-oidc-profiles
      parameters:
      - name: realmId
        in: path
        description: The ID of the authentication realm.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/OidcProfile'
              required:
              - data
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OidcProfileResponse'
                  links:
                    $ref: '#/components/schemas/OidcProfileLinks'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '422':
          $ref: '#/components/responses/UnprocessableEntityError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      tags:
      - OIDC Profiles
      summary: Get OIDC Profiles
      description: Retrieve OIDC profiles for the specified authentication realm.
      operationId: get-v2-authentication-realms-realmId-oidc-profiles
      parameters:
      - name: realmId
        in: path
        description: The ID of the authentication realm.
        required: true
        schema:
          type: string
          format: uuid
      - $ref: '#/components/parameters/page-limit'
      - $ref: '#/components/parameters/page-offset'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/OidcProfileResponse'
                  links:
                    $ref: '#/components/schemas/PaginationLinks'
                  meta:
                    $ref: '#/components/schemas/PaginationMeta'
              examples:
                list_oidc_profiles:
                  summary: List of OIDC profiles
                  value:
                    data:
                    - id: c8849022-c9c6-4888-9ca8-2bb78f445fb0
                      type: oidc-profile
                      name: Google
                      issuer: https://accounts.google.com
                      client_id: google-client-id
                    - id: 21be087e-faa6-41fc-9b51-6763a363ec2d
                      type: oidc-profile
                      name: Apple
                      issuer: https://appleid.apple.com
                      client_id: apple-client-id
                    meta:
                      results:
                        total: 2
                      page:
                        limit: 25
                        offset: 0
                    links:
                      current: https://euwest.api.elasticpath.com/v2/authentication-realms/45928070-44a6-448b-8246-a85aa35320af/oidc-profiles?page%5Boffset%5D=0&page%5Blimit%5D=25
                      first: https://euwest.api.elasticpath.com/v2/authentication-realms/45928070-44a6-448b-8246-a85aa35320af/oidc-profiles?page%5Boffset%5D=0&page%5Blimit%5D=25
                      last: null
                      next: null
                      prev: null
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/authentication-realms/{realmId}/oidc-profiles/{profileId}:
    get:
      tags:
      - OIDC Profiles
      summary: Get OIDC Profile
      description: Retrieve a specific OIDC profile by ID.
      operationId: get-v2-authentication-realms-realmId-oidc-profiles-profileId
      parameters:
      - name: realmId
        in: path
        description: The ID of the authentication realm.
        required: true
        schema:
          type: string
          format: uuid
      - name: profileId
        in: path
        description: The ID of the OIDC profile.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OidcProfileResponse'
                  links:
                    $ref: '#/components/schemas/OidcProfileLinks'
              examples:
                get_oidc_profile:
                  summary: OIDC profile
                  value:
                    data:
                      id: c8849022-c9c6-4888-9ca8-2bb78f445fb0
                      type: oidc-profile
                      name: Google
                      issuer: https://accounts.google.com
                      client_id: google-client-id
                    links:
                      self: https://euwest.api.elasticpath.com/v2/authentication-realms/45928070-44a6-448b-8246-a85aa35320af/oidc-profiles/c8849022-c9c6-4888-9ca8-2bb78f445fb0
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '422':
          $ref: '#/components/responses/UnprocessableEntityError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      tags:
      - OIDC Profiles
      summary: Update OIDC Profile
      description: Update a specific OIDC profile by ID.
      operationId: put-v2-authentication-realms-realmId-oidc-profiles-profileId
      parameters:
      - name: realmId
        in: path
        description: The ID of the authentication realm.
        required: true
        schema:
          type: string
          format: uuid
      - name: profileId
        in: path
        description: The ID of the OIDC profile.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/OidcProfile'
              required:
              - data
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OidcProfileResponse'
                  links:
                    $ref: '#/components/schemas/OidcProfileLinks'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '422':
          $ref: '#/components/responses/UnprocessableEntityError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
      - OIDC Profiles
      summary: Delete OIDC Profile
      description: Delete a specific OIDC profile by ID.
      operationId: delete-v2-authentication-realms-realmId-oidc-profiles-profileId
      parameters:
      - name: realmId
        in: path
        description: The ID of the authentication realm.
        required: true
        schema:
          type: string
          format: uuid
      - name: profileId
        in: path
        description: The ID of the OIDC profile.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: No Content
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '422':
          $ref: '#/components/responses/UnprocessableEntityError'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    UUID:
      type: string
      description: The unique identifier.
      format: uuid
      example: deb6b25f-8451-4211-9a22-95610333df23
    OidcProfileResponse:
      allOf:
      - $ref: '#/components/schemas/OidcProfile'
      - type: object
        properties:
          id:
            $ref: '#/components/schemas/UUID'
            description: The unique identifier for an OIDC Profile.
          meta:
            type: object
            properties:
              created_at:
                description: The date the resource is created.
                type: string
                format: date-time
                example: '2025-09-08T20:58:56.355Z'
              updated_at:
                description: The date the resource is updated.
                type: string
                format: date-time
                example: '2025-09-08T20:58:56.355Z'
              issuer:
                description: The OIDC issuer URL.
                type: string
                format: uri
                example: https://test.issuer.com
          links:
            type: object
            properties:
              self:
                description: A URL to the specific resource.
                type: string
                format: uri
                example: https://useast.api.elasticpath.com/v2/authentication-realms/deb6b25f-8451-4211-9a22-95610333df23/oidc-profiles/abc123
              authorization-endpoint:
                description: The authorization endpoint URL.
                type: string
                format: uri
              callback-endpoint:
                description: The callback endpoint URL.
                type: string
                format: uri
              client-discovery-url:
                description: The client discovery URL.
                type: string
                format: uri
    OidcProfileLinks:
      allOf:
      - $ref: '#/components/schemas/SelfLink'
      - type: object
        properties:
          authorization-endpoint:
            description: The link that front-end applications should use to authenticate the OpenID Connect profile. The front-end application is responsible for appending all of the [required parameters](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest) to the request. The endpoint also forwards some optional parameters, `display`, `prompt` and `ui_locales` to the configured Identity Provider. These parameters allow you to control the behavior of the authentication process on the Identity Provider. Additionally the query parameter `ep_report_callback_replay_error` can be set to `true` in which case if the user revisits the `callback-endpoint` multiple times (e.g., if they hit their Back button), we will redirect the user back to the front end with an [Authentication error response](https://openid.net/specs/openid-connect-core-1_0.html#AuthError) of `callback_replay`.
            type: string
            format: uri
          callback-endpoint:
            description: The link that should be supplied as the callback URL to the upstream authentication provider.
            type: string
            format: uri
          client-discovery-url:
            description: The link to the [OpenID Connect Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html) document for this provider, see [here](/docs/api/single-sign-on/get-oidc-idp-stores-store-id-authentication-realms-realm-id-well-known-openid-configuration).
            type: string
            format: uri
    PaginationLinks:
      type: object
      properties:
        current:
          type: string
          format: uri
          description: The current page of data.
        first:
          type:
          - string
          - 'null'
          format: uri
          description: The first page of data.
        last:
          type:
          - string
          - 'null'
          format: uri
          description: The last page of data.
        next:
          type:
          - string
          - 'null'
          format: uri
          description: The next page of data.
        prev:
          type:
          - string
          - 'null'
          format: uri
          description: The previous page of data.
        self:
          type: string
          format: uri
          description: The current resource URL.
    Error:
      type: object
      required:
      - status
      - title
      properties:
        title:
          type: string
          description: A brief summary of the error.
          examples:
          - Bad Request
        status:
          type: string
          format: string
          description: The HTTP response code of the error.
          examples:
          - '400'
        detail:
          type: string
          description: Optional additional detail about the error.
          examples:
          - The field 'name' is required
    SelfLink:
      type: object
      properties:
        self:
          description: A URL to the specific resource.
          type: string
          format: uri
    OidcProfile:
      type: object
      properties:
        type:
          type: string
          description: Specifies the type of object. Set this value to `oidc-profile`.
          const: oidc-profile
        name:
          type: string
          description: Specifies the name of the OIDC profile.
          example: my-oidc-profile
        discovery_url:
          type: string
          description: The OIDC discovery URL.
          format: uri
          example: https://example.com/.well-known/openid_configuration
        client_id:
          type: string
          description: The client ID for the OpenID Provider.
          example: my-client-id
        client_secret:
          type: string
          description: The client secret for the OpenID Provider.
          example: my-client-secret
      required:
      - type
      - name
    PaginationMeta:
      type: object
      properties:
        page:
          type: object
          properties:
            current:
              type: integer
              description: The current page number.
              example: 1
            limit:
              type: integer
              description: The number of items per page.
              example: 25
            offset:
              type: integer
              description: The number of items to offset by.
              example: 0
            total:
              type: integer
              description: The total number of pages.
              example: 1
        results:
          type: object
          properties:
            total:
              type: integer
              description: The total number of results after applying filters, if any, or all results.
              example: 1
    ErrorResponse:
      type: object
      required:
      - errors
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
        links:
          $ref: '#/components/schemas/SelfLink'
  parameters:
    page-limit:
      name: page[limit]
      in: query
      description: The number of records per page.
      required: false
      schema:
        type: integer
        format: int64
        minimum: 1
        maximum: 100
        default: 25
    page-offset:
      name: page[offset]
      in: query
      description: The number of records to offset the results by.
      required: false
      schema:
        type: integer
        format: int64
        minimum: 0
        default: 0
  responses:
    NotFoundError:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            not-found-error:
              value:
                errors:
                - title: Not Found
                  status: '404'
                  detail: Resource not found
    UnprocessableEntityError:
      description: Unprocessable Entity
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            unprocessable-entity-error:
              value:
                errors:
                - title: Unprocessable Entity
                  status: '422'
                  detail: Constraint violation
    BadRequestError:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            bad-request-error:
              value:
                errors:
                - title: Bad Request
                  status: '400'
                  detail: 'Validation failed: field ''Name'' on the ''min'' tag.'
    InternalServerError:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            internal-server-error:
              summary: Internal server error
              value:
                errors:
                - title: Internal Server Error
                  status: '500'
                  detail: there was a problem processing your request
  securitySchemes:
    BearerToken:
      type: http
      scheme: bearer