Read channel configuration
const url = 'https://secure.ethicsportal.eu/organizations/example/whistleblower/portal/configuration.json';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://secure.ethicsportal.eu/organizations/example/whistleblower/portal/configuration.json \ --header 'Authorization: Bearer <token>'Read the channel’s company details, settings and compliance officer. Requires channel:write. A personal token also needs its user to be a current administrator; an organisation token needs only the scope. This privileged resource includes company details and the compliance officer membership ID; the ordinary channel metadata endpoint remains unchanged. Organisation integrations and the current DPA must be enabled/accepted.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Obfuscated organisation ID.
Header Parameters
Section titled “Header Parameters”The ETag of a response you already hold. If nothing changed, the response is 304 Not Modified with no body. It still counts toward rate limits and, where reads are audited, the audit trail.
Responses
Section titled “Responses”Current settings and derived readiness.
object
A supported ISO 3166-1 alpha-2 country code. Country-specific retention minimums apply.
An active administrator membership in this organisation, identified by its obfuscated ID. Creation returns your membership_id. Null removes the appointment and can make the channel inactive. Raw database IDs are rejected.
Must also meet the selected country’s minimum. Defaults to 60 months. A country change and its retention adjustment are validated together.
Example
{ "legal_name": "Example company", "country_code": "FR", "registration_number": "EXAMPLE-123", "address": "1 Example Street", "employee_range": "1-49", "industry": "professional_scientific_services", "website": null, "phone_number": null, "compliance_officer_id": "mAbCde", "brand_color": "#123456", "retention_months": 60, "social_dialogue_consulted": false, "voice_recording_enabled": false, "email_intake_enabled": false, "id": "AB12CD34", "active": false, "verified": false, "reporting_form_url": "https://secure.ethicsportal.eu/p/AB12CD34", "missing_fields": []}Headers
Section titled “Headers”Weak validator of this response body. Send it back as If-None-Match.
Not modified since the ETag sent in If-None-Match. No body.
Invalid JSON body, attributes or types.
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "invalid_request", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Missing or unusable token.
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "invalid_token", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Required scope missing, a personal token whose user is not a current administrator, or agreement_required until browser acceptance.
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "forbidden", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Resource inaccessible, or API access suspended.
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "not_found", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Rate limit exceeded. Retry-After: 60.
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "rate_limited", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}