Doximity OAuth API

OAuth 2.0 authorization and token endpoints

OpenAPI Specification

doximity-oauth-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Doximity 2.0 & OpenID Connect OAuth API
  version: '1.0'
  description: OAuth 2.0 authorization server and OpenID Connect provider that authenticates and identifies verified Doximity medical professionals against the Doximity medical database. Uses the Authorization Code grant with mandatory PKCE (S256), refresh tokens, and the device_code grant.
  contact:
    name: Doximity Business Development
    email: bd@doximity.com
    url: https://www.doximity.com/developers/documentation
  termsOfService: https://www.doximity.com/terms-of-service
servers:
- url: https://auth.doximity.com
  description: Production authorization server
security:
- doximityOAuth: []
tags:
- name: OAuth
  description: OAuth 2.0 authorization and token endpoints
paths:
  /oauth/authorize:
    get:
      operationId: authorize
      tags:
      - OAuth
      summary: Start the Authorization Code flow
      description: Redirect the user's browser here to begin the Authorization Code grant with PKCE. On approval Doximity redirects back to redirect_uri with a short-lived authorization code and state.
      parameters:
      - name: client_id
        in: query
        required: true
        schema:
          type: string
        description: Your application client id
      - name: response_type
        in: query
        required: true
        schema:
          type: string
          enum:
          - code
          - code id_token
          - id_token
      - name: redirect_uri
        in: query
        required: true
        schema:
          type: string
          format: uri
      - name: scope
        in: query
        required: true
        schema:
          type: string
        description: Space-delimited scopes; must include openid
      - name: state
        in: query
        required: true
        schema:
          type: string
        description: Opaque CSRF-mitigation value echoed back
      - name: code_challenge
        in: query
        required: true
        schema:
          type: string
        description: PKCE code challenge
      - name: code_challenge_method
        in: query
        required: true
        schema:
          type: string
          enum:
          - S256
      - name: nonce
        in: query
        required: false
        schema:
          type: string
      - name: prompt
        in: query
        required: false
        schema:
          type: string
          enum:
          - none
          - login
          - consent
          - create
      - name: display
        in: query
        required: false
        schema:
          type: string
          enum:
          - page
          - popup
      - name: response_mode
        in: query
        required: false
        schema:
          type: string
          enum:
          - query
          - fragment
      - name: id_token_hint
        in: query
        required: false
        schema:
          type: string
      responses:
        '302':
          description: Redirect to redirect_uri with code+state on success, or error+error_description on denial.
  /oauth/token:
    post:
      operationId: token
      tags:
      - OAuth
      summary: Exchange an authorization code or refresh token for tokens
      description: Token endpoint. Authenticate with HTTP Basic (client_secret_basic).
      security:
      - clientBasic: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                grant_type:
                  type: string
                  enum:
                  - authorization_code
                  - refresh_token
                  - urn:ietf:params:oauth:grant-type:device_code
                code:
                  type: string
                redirect_uri:
                  type: string
                  format: uri
                code_verifier:
                  type: string
                  description: PKCE verifier
                refresh_token:
                  type: string
                scope:
                  type: string
              required:
              - grant_type
      responses:
        '200':
          description: Token response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '400':
          description: Invalid request / invalid_grant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuthError'
        '401':
          description: Invalid client credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuthError'
        '429':
          description: Rate limit exceeded
  /oauth/revoke:
    post:
      operationId: revoke
      tags:
      - OAuth
      summary: Revoke an access or refresh token
      security:
      - clientBasic: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                token:
                  type: string
              required:
              - token
      responses:
        '200':
          description: Token revoked
  /api/v1/rate_limit:
    get:
      operationId: getRateLimit
      tags:
      - OAuth
      summary: Inspect current rate-limit status
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Current rate limit window
        '429':
          description: Rate limit exceeded
  /.well-known/oauth-authorization-server:
    get:
      operationId: oauthAuthorizationServer
      tags:
      - OAuth
      summary: OAuth 2.0 Authorization Server Metadata (RFC 8414)
      responses:
        '200':
          description: Authorization server metadata
components:
  schemas:
    TokenResponse:
      type: object
      properties:
        access_token:
          type: string
        token_type:
          type: string
          example: bearer
        expires_in:
          type: integer
          example: 1800
        refresh_token:
          type: string
        scope:
          type: string
        id_token:
          type: string
          description: Signed JWT (RS256)
    OAuthError:
      type: object
      properties:
        error:
          type: string
          example: invalid_grant
        error_description:
          type: string
  securitySchemes:
    doximityOAuth:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://auth.doximity.com/oauth/authorize
          tokenUrl: https://auth.doximity.com/oauth/token
          refreshUrl: https://auth.doximity.com/oauth/token
          scopes:
            openid: Enables the OpenID Connect id_token to be returned
            search: Search the Doximity member directory
            dialer: Access to Doximity Dialer functionality
            docsgpt:access: Access to DocsGPT
            hipaa:identified: Access identified data under HIPAA
            jobs:read: Read job data
            colleagues:read: Read the member's colleagues
            colleagues:write: Modify the member's colleagues
            login_context:inferred: Access inferred login context
            sessions:linked: Access linked sessions
            activities:read:cards: Read activity cards
            activities:read:comments: Read activity comments
            activities:read:likes: Read activity likes
            activities:write:likes: Write activity likes
            profile:read:basic: Read basic profile (name, credentials, specialty, photo)
            profile:read:email: Read the member's email
            profile:read:dialer_phone: Read the member's Dialer phone number
            profile:read:experience: Read the member's experience
            profile:read:office: Read the member's office information
            profile:read:permissions: Read the member's permissions
            profile:read:private_contact: Read the member's private contact information
    openIdConnect:
      type: openIdConnect
      openIdConnectUrl: https://auth.doximity.com/.well-known/openid-configuration
    clientBasic:
      type: http
      scheme: basic
      description: HTTP Basic with client_id:client_secret (client_secret_basic)
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT