Overview

Settings covers all personalisation and configuration options for an Ananas GDS account. It is split into two scopes: personal settings that apply to the individual user (theme, language, notification toggles), and company settings that apply across the whole account (company profile, branding, fact sheet output format, partner override permissions).

Company Profile

The Company model holds the account's public-facing identity. It is a OneToOne relation to the owner user and is shared across all sub-users.

FieldDescription
companyCompany name — appears on fact sheets, invoices, and partner listings.
websiteCompany website URL.
address, post_code, country, state, cityPhysical address components.
contact_numberPrimary contact phone number.
logo / logo_idHosted logo URL and ImageKit file ID. Old logo is auto-deleted when replaced.
description / about_usCompany overview text shown on the partner marketplace profile.
work_in_countriesJSON array of country names where the company operates.
brandingJSON object for custom branding options.
facebook, instagram, linked_in, trustpilot, trip_advisorSocial media and review platform URLs.

Company Endpoints

MethodPathDescription
GET/api/settings/company/Get the company profile for the authenticated user.
POST/api/settings/company/create/Create initial company profile (first-time setup).
PUT/api/settings/company/edit/Update company name, address, description, social links, branding.
GET/api/settings/company/settingsCanonical company settings endpoint (returns merged company + preferences data).
GET/api/settings/company/preferences/Get company-level preferences (audit trail, output format, override moderation).
GET/api/settings/portfolio/{company_id}/Public portfolio view of a company (used in partner marketplace).

User Preferences

The Preferences model is a OneToOne to the user and controls personal UI and notification behaviour. Company-level output format and override permissions are stored in CompanyPreferences (OneToOne to the owner user).

Personal Preferences

FieldDescription
themeUI colour theme string.
layoutC (Compact) or S (Stylish) — controls dashboard density.
language_overrideBCP-47 locale code to override the browser default.
two_factor_authWhether 2FA is enabled for this user.
email_addressesComma-separated additional email addresses for notifications.
partnership_changes_mailEmail when a partner contract changes status.
partnership_new_mailEmail when a new partner request is received.
features_offers_mailMarketing emails for new features and offers.
fact_review_mailEmail when a fact sheet is reviewed.
notify_partnership_requestIn-app notification for partner requests.
notify_partnership_changesIn-app notification for contract changes.
notify_fact_sheet_changesIn-app notification when a connected hotel updates their fact sheet.
notify_fact_sheet_downloadIn-app notification when a partner downloads your fact sheet.
notify_fact_reviewIn-app notification when a fact sheet review is completed.

Company Preferences

FieldDescription
audit_trailWhen enabled, all data changes are logged for compliance review.
add_logoInclude the company logo on generated PDF fact sheets.
add_company_infoInclude contact info block on PDF fact sheets.
partner_override_factsAllow connected tour operators to override fact sheet values for their own view.
overriding_moderationLevel of override control: M Minimum, R Reasonable, D Moderate, A Advanced, O Open.
pdf_layoutPDF output format: F Facts points, R Rich text, G Grouped, S Summarized.
api_layoutAPI response format: same options as pdf_layout.

Preference Endpoints

MethodPathDescription
GET/api/settings/account/settingsCanonical personal settings (preferences + user profile merged).
GET/api/settings/preferences/Get personal preferences.
POST/api/settings/preferences/create/Create preferences record (first-time setup).
PUT/api/settings/preferences/edit/Update personal preferences.
GET/api/settings/settings/Get AppSettings JSON blobs (preferences, security, templates, visibility, etc.).
PUT/api/settings/settings/update/Update one or more AppSettings JSON blobs.
GET/api/settings/settings/defaults/Get the default values for all settings blobs.

Mailing Lists & Contacts

Mailing lists let accommodation providers group contacts for bulk PDF distribution of fact sheets. Each list has a name and optional description, and contains any number of Contact records linked via MailingListContact.

ModelKey Fields
MailingListname (unique per user), description, date_created.
Contactname, title, email_address (unique per user), location, phone, source, metadata.
MailingListContactJoin table between MailingList and Contact. unique_together enforced.

Mailing List Endpoints

MethodPathDescription
GET/api/settings/mailing-lists/List all mailing lists.
POST/api/settings/mailing-lists/create/Create a new list.
PUT/api/settings/mailing-lists/update/{id}/Rename or update a list.
DELETE/api/settings/mailing-lists/delete/{id}/Delete a list (contacts are not deleted).
GET/api/settings/mailing-lists/{id}/contacts/List contacts in a specific mailing list.
POST/api/settings/mailing-lists/{id}/add-contact/Add a contact to a list.
POST/api/settings/mailing-lists/{id}/remove-contact/Remove a contact from a list.
GET/api/settings/contacts/List all contacts in the address book.
POST/api/settings/contacts/create/Add a contact manually.
PUT/api/settings/contacts/update/{id}/Update contact details.
DELETE/api/settings/contacts/delete/{id}/Delete a contact from the address book.
POST/api/settings/contacts/import/csv/Bulk import contacts from a CSV file.

AppSettings JSON Blobs

The AppSettings model stores all extended configuration as typed JSON blobs. Each blob maps to a settings category retrievable and updatable independently:

BlobPurpose
preferencesUI and behaviour preferences.
securitySession limits, IP allowlisting, login alert settings.
templatesCustom email and PDF template configuration.
moderationFact sheet review and approval workflow settings.
visibilityControls what data is visible to partners.
notificationsNotification delivery preferences (mirrors Preferences model toggles).
auditAudit trail configuration.
advancedAdvanced options for power users.

Audit Trail

When CompanyPreferences.audit_trail is enabled, significant data changes are recorded. The audit log is retrievable via:

MethodPathDescription
GET/api/settings/audit/List audit log entries for the account, ordered by timestamp descending.

Using get_setting() in backend code

Backend views should read settings via from settings.services import get_setting and get_setting(user, 'category', 'key', default=False). Do not use the deprecated check_settings_status() shim.