Tvscientific · Authentication Profile
Tvscientific Authentication
Authentication
Tvscientific declares 2 security scheme(s) across its OpenAPI definitions.
CompanyAdvertisingConnected TVCTVStreamingPerformance MarketingAdTechMeasurementCampaign ManagementReal Time BiddingAttribution
Methods:
Schemes: 2
OAuth flows:
API key in:
Security Schemes
unknown
cookie
Source
Authentication Profile
generated: '2026-08-12'
method: probed
source: >-
Anonymous probes of https://api.tvscientific.app on 2026-08-12. No OpenAPI securitySchemes
exist to derive from (tvScientific publishes no spec) and no public authentication
documentation exists to search, so this profile is what the wire actually showed.
api: tvScientific Campaign Management API
docs: null
docs_note: >-
There is no public auth page. help.tvscientific.com 301s to an Atlassian Service Desk
login (https://tvscientific.atlassian.net/servicedesk/customer/portal/2/user/login) and
support.tvscientific.com redirects into a Salesforce Community SAML request, so any
authentication guide tvScientific has written sits behind a customer login.
posture: credentialed
public_access: partial
public_access_detail: >-
The version root indexes (/v1/, /v2/), the health endpoint (/health) and one collection
(/v1/terms_and_conditions/) are readable anonymously. Everything else — campaigns,
creatives, lineitems, audiences, advertisers, billing, users — requires credentials.
schemes:
- id: unidentified
type: unknown
confirmed: false
evidence:
status: 403
body: '{"detail":"Authentication credentials were not provided."}'
url: https://api.tvscientific.app/v1/campaigns/
note: >-
Django REST Framework returns 403 with this message when no authentication class
successfully authenticated the request AND none of them advertises a challenge. Because
no WWW-Authenticate header is sent, the accepted credential type cannot be named from
outside. Recorded as unidentified rather than guessed.
- id: session-cookie
type: cookie
confirmed: false
confidence: medium
evidence:
header: 'Vary: Accept, Cookie, origin'
url: https://api.tvscientific.app/v1/
note: >-
The API varies its response on the Cookie header, which means a session cookie is at
least one of the inputs to authorization. This is consistent with the Campaign Management
UI at https://tvscientific.app calling this API with a session. It does not rule out a
token or key scheme also being accepted.
oauth2: false
oidc: false
mutual_tls: false
negative_probes:
# every published OAuth/OIDC/token discovery surface MISSED
- url: https://api.tvscientific.app/.well-known/oauth-authorization-server
status: 404
- url: https://api.tvscientific.app/.well-known/openid-configuration
status: 404
- url: https://api.tvscientific.app/.well-known/oauth-protected-resource
status: 404
- url: https://api.tvscientific.app/o/token/
status: 404
- url: https://api.tvscientific.app/o/authorize/
status: 404
- url: https://api.tvscientific.app/token/
status: 404
- url: https://api.tvscientific.app/api-token-auth/
status: 404
- url: https://api.tvscientific.app/v1/auth/
status: 404
- url: https://api.tvscientific.app/v1/login/
status: 404
- url: https://api.tvscientific.app/v1/register/
status: 404
scopes: null
scopes_note: >-
No OAuth surface exists, so there is no scope vocabulary to capture and no
scopes/ artifact is written. Authorization appears to be tenant- and role-based —
/v1/tenants/, /v1/organizations/, /v1/organization_users/, /v1/user_types/ and
/v1/advertiser_users/ are all first-class collections — but the model is not published.
onboarding:
self_serve: false
path: >-
Access is arranged through the tvScientific account team. The public site offers a demo
request (https://www.tvscientific.com/ctv-demo) and a contact form
(https://www.tvscientific.com/contact); there is no developer sign-up, no API key
self-issuance page and no public credential lifecycle documentation.
pointer_emitted: false
pointer_note: >-
No `type: Authentication` pointer is wired into apis.yml. The scorer's check is
`authentication_documented`, and tvScientific documents nothing publicly — this artifact
records an observed 403 and a named absence, not a provider-published auth guide. Emitting
the pointer would credit tvScientific with auth documentation it has not published. Same
rule as the well-known and agent-card probes: the pointer asserts the PROVIDER serves the
surface.
gaps:
- No public authentication documentation.
- No WWW-Authenticate challenge, so the scheme is undiscoverable from the wire.
- 403 returned where 401 is semantically correct for a missing credential.
- No OAuth 2.0 or OpenID Connect metadata document on any host.
- No documented key rotation, expiry or revocation policy.