Diagnostic Robotics · Authentication Profile

Diagnostic Robotics Authentication

Authentication

Diagnostic Robotics secures its APIs with apiKey and oauth2 across 3 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode and password flow(s).

healthhealthcareclinical-aipopulation-healthrisk-adjustmentpredictive-analyticstriagefhirclaims-datacare-managementpayersmedical-coding
Methods: apiKey, oauth2 Schemes: 3 OAuth flows: authorizationCode, password API key in: header

Security Schemes

apikey apiKey
· in: header (x-client)
OAuth2PasswordBearer oauth2
· flows: password
OAuth2AuthorizationCodeBearer oauth2
· flows: authorizationCode

Source

Authentication Profile

Raw ↑
generated: '2026-08-12'
method: searched
source: openapi/diagnostic-robotics-patient-questionnaire-openapi.yml, openapi/diagnostic-robotics-precision-population-health-openapi.yml,
  openapi/diagnostic-robotics-symptom-search-openapi.yml
docs: https://docs.diagnosticrobotics.com/docs/proactive-patient-risk-feed-api/3y8qknbsqo42r-authentication
summary:
  types:
  - apiKey
  - oauth2
  api_key_in:
  - header
  oauth2_flows:
  - authorizationCode
  - password
  credentials_issued_by: provider
  self_serve_signup: false
  note: >-
    Credentials are never self-serve. The Patient Questionnaire and Symptom Search services take an x-client API
    key "provided by Diagnostic Robotics"; the Precision Population Health service takes an OAuth 2.0 client_id /
    client_secret pair that Diagnostic Robotics issues per customer, exchanged for a bearer token at
    POST /api/oauth/token on the customer's own subdomain.
schemes:
- name: apikey
  type: apiKey
  in: header
  parameter: x-client
  description: Client API key, provided by Diagnostic Robotics, must be supplied with any request
  sources:
  - openapi/diagnostic-robotics-patient-questionnaire-openapi.yml
  - openapi/diagnostic-robotics-symptom-search-openapi.yml
- name: OAuth2PasswordBearer
  type: oauth2
  flows:
  - flow: password
    tokenUrl: /api/oauth/token
    scopes: 0
  applied_to: 14 of 15 operations in the Precision Population Health spec
  docs_form: >-
    POST https://[CLIENT].precision-population-health.diagnosticrobotics.com/api/oauth/token with
    Content-Type application/x-www-form-urlencoded and body client_id={client_id}&client_secret={client_secret};
    the response TokenResponse is presented as `Authorization: Bearer {token}` on every subsequent call.
  sources:
  - openapi/diagnostic-robotics-precision-population-health-openapi.yml
  - https://docs.diagnosticrobotics.com/docs/proactive-patient-risk-feed-api/3y8qknbsqo42r-authentication
- name: OAuth2AuthorizationCodeBearer
  type: oauth2
  flows:
  - flow: authorizationCode
    authorizationUrl: https://digital-outreach.us.auth0.com/authorize?audience=dev-digital-outreach-api-identifier
    tokenUrl: https://digital-outreach.us.auth0.com/oauth/token
    scopes: 0
  applied_to: 1 operation (upload_api_v1_dataset__dataset_type__upload_post)
  sources:
  - openapi/diagnostic-robotics-precision-population-health-openapi.yml
x-findings:
- id: dead-auth0-tenant
  severity: high
  detail: >-
    The published OpenAPI declares an authorizationCode flow against the Auth0 tenant
    digital-outreach.us.auth0.com. That host no longer resolves as an Auth0 tenant - every discovery path
    returns HTTP 404 with the body "Unknown host: digital-outreach.us.auth0.com". The declared audience
    (dev-digital-outreach-api-identifier) is also a development identifier. The scheme as published is not
    usable; the password/client-credentials flow at /api/oauth/token is the live path.
  evidence:
  - url: https://digital-outreach.us.auth0.com/.well-known/openid-configuration
    status: 404
  - url: https://digital-outreach.us.auth0.com/.well-known/oauth-authorization-server
    status: 404
  checked: '2026-08-12'
- id: no-oauth-discovery
  severity: medium
  detail: >-
    No RFC 8414 / OIDC discovery document is served on any Diagnostic Robotics host. The token endpoint is
    documented only in prose and in the OpenAPI, and tokenUrl is recorded as a relative path (/api/oauth/token)
    rather than an absolute URL.
  evidence:
  - url: https://sandbox.precision-population-health.diagnosticrobotics.com/.well-known/oauth-authorization-server
    status: 200
    note: HTTP 200 but the body is the React SPA index.html, not a discovery document
  checked: '2026-08-12'
x-evidence:
- url: https://sandbox.precision-population-health.diagnosticrobotics.com/api/v2/RiskList
  status: 401
  body: '{"detail":"Not authenticated"}'
- url: https://sandbox.precision-population-health.diagnosticrobotics.com/api/oauth/token
  status: 405
  note: GET rejected; endpoint is POST-only, confirming the documented token endpoint is live