Pavoot · Authentication Profile

Pavoot Authentication

Authentication

Pavoot declares 2 security scheme(s) across its OpenAPI definitions.

CompanyEventsEvent ManagementMarketingAI AgentAttendee IntelligenceGTMField MarketingPipeline
Methods: Schemes: 2 OAuth flows: API key in:

Security Schemes

http
scheme: bearer · in: header ()
oauth2

Source

Authentication Profile

Raw ↑
generated: '2026-08-13'
method: probed
source: >-
  https://api.pavoot.com/openapi.json (no securitySchemes declared) +
  https://api.pavoot.com/me (401 probe) +
  https://clerk.pavoot.com/.well-known/openid-configuration
name: Pavoot Application API authentication
summary: >-
  Pavoot's application API at api.pavoot.com is authenticated with Clerk-issued
  session tokens presented as a bearer credential. The published OpenAPI declares
  NO components.securitySchemes and NO operation-level security, so the auth model
  below was established by probing the live API and Pavoot's own Clerk OIDC
  discovery document — not read from the spec.
schemes:
- id: clerk_session_bearer
  type: http
  scheme: bearer
  bearer_format: JWT
  in: header
  header: Authorization
  description: >-
    Clerk-issued session JWT. Verified against the Pavoot Clerk instance
    (issuer https://clerk.pavoot.com, RS256, JWKS at
    https://clerk.pavoot.com/.well-known/jwks.json). The GET /me operation
    documents that "Clerk is shared across multiple Pavoot apps, so a valid
    Clerk session does NOT imply the user belongs here" — app membership is
    resolved from this application's own database, not from Clerk
    public_metadata.
  declared_in_spec: false
  evidence:
    url: https://api.pavoot.com/me
    http_status: 401
    body: '{"detail":"Unauthorized: Authentication failed"}'
- id: clerk_oauth2
  type: oauth2
  flow: authorization_code
  pkce: S256
  issuer: https://clerk.pavoot.com
  authorization_endpoint: https://clerk.pavoot.com/oauth/authorize
  token_endpoint: https://clerk.pavoot.com/oauth/token
  introspection_endpoint: https://clerk.pavoot.com/oauth/token_info
  revocation_endpoint: https://clerk.pavoot.com/oauth/token/revoke
  userinfo_endpoint: https://clerk.pavoot.com/oauth/userinfo
  jwks_uri: https://clerk.pavoot.com/.well-known/jwks.json
  grant_types:
  - authorization_code
  - refresh_token
  token_endpoint_auth_methods:
  - client_secret_basic
  - client_secret_post
  - none
  description: >-
    Pavoot runs a Clerk-hosted OAuth 2.0 / OpenID Connect authorization server on
    its own subdomain. Discovery is anonymous and returns a real RFC 8414 / OIDC
    document. This is the identity layer behind the app; Pavoot does not publish a
    developer OAuth client-registration flow.
  evidence:
    url: https://clerk.pavoot.com/.well-known/openid-configuration
    http_status: 200
    content_type: application/json
unauthenticated_surfaces:
- path: /openapi.json
  note: The FastAPI-generated OpenAPI document is served publicly with no auth.
  http_status: 200
- path: /docs
  note: FastAPI Swagger UI, publicly reachable.
  http_status: 200
- path: /redoc
  note: FastAPI ReDoc, publicly reachable.
  http_status: 200
- path: /attendee-registration-info/{token}
  note: >-
    Explicitly public per its own description ("Public: returns project name and
    layout for the registration form. No auth required.") — token-scoped, not
    session-scoped.
- path: /register-attendee
  note: >-
    Accepts a public registration token for attendee self-registration; the
    member-token variant requires a signed-in Clerk user.
- path: /upload-link-by-token
  note: Upload-link token surface, resolved by opaque token rather than session.
authorization:
  model: >-
    Fine-grained, database-backed RBAC layered on top of the Clerk session. The API
    exposes an explicit permission surface rather than OAuth scopes: role and user
    permission matrices, permission presets with a settable default, per-task
    permissions, and a middleware helper.
  surfaces:
  - operationId: check_route_access_endpoint_checkRouteAccess_get
    path: /checkRouteAccess
    note: >-
      Returns {"allowed": true|false} for the current user and a given path; used
      by the frontend middleware to gate /faces, /personalized-tags,
      /photographers, /recipients.
  - operationId: get_effective_permissions_endpoint_getEffectivePermissions_get
    path: /getEffectivePermissions
  - operationId: get_effective_org_permissions_endpoint_getEffectiveOrgPermissions_get
    path: /getEffectiveOrgPermissions
  - path: /org/permissions/role-matrix
  - path: /org/permissions/user-matrix
  - path: /org/permission-presets
  - path: /admin/isAdmin
  tenancy: >-
    Two-level tenancy — organization (organizationId) and project (projectId).
    Nearly every read operation is scoped by a required projectId or
    organizationId query parameter; admin/* operations are gated on a separate
    platform-admin check.
developer_access:
  public_signup: false
  api_keys: false
  note: >-
    Pavoot publishes no developer program, no API key issuance, and no partner
    OAuth client registration. Credentials are obtained by being a user of the
    Pavoot application, not by registering as an API consumer. The OpenAPI is
    readable by anyone; the API itself is not callable by anyone.