Skip to main content
Core Resources

Organisations and Brands

Retrieve and update top-level tenant organisations and manage brand settings including logos and invoice images.

Auth required: Yes (auth:api) for all endpoints.


Model Properties

Organisation

Property Type Required Description
id integer auto Unique identifier
name string Yes Organisation name (min 2 chars)
registration_number string No Company registration number
tax_registration_number string No VAT number
slogan string No Organisation slogan
organisation_type string No Legal type (e.g. SAS, SARL, SA)
capital string No Share capital
activity_code string No NAF/APE activity code
main_contact_first_name string No Main contact first name
main_contact_last_name string No Main contact last name
accountant_first_name string No Accountant first name
accountant_last_name string No Accountant last name
main_address_line1 string No Address line 1
main_address_line2 string No Address line 2
main_address_postal_code string No Postal code
main_address_city string No City
main_address_country string No Country
email_address string No Main email address
send_invoices_from_email_address string No Email address used to send invoices
send_external_messages_from_email_address string No Email address for external messages
send_internal_message_from_email_address string No Email address for internal messages
website string No Website URL
phone string No Phone number
mobile_phone string No Mobile phone number
fax string No Fax number
term_nb_days integer No Default payment term in days
quote_nb_days integer No Number of days a quote is valid
iban string No Organisation IBAN (for SEPA direct debit collections)
bic string No Organisation BIC/SWIFT code
ics string No SEPA creditor identifier
journal_bank string No Accounting journal code for bank
journal_purchases string No Accounting journal code for purchases
journal_sales string No Accounting journal code for sales
accounts_chars string No Accounting chart of accounts prefix
account_bank string No Bank account number in chart of accounts
account_bank_name string No Bank account name in chart of accounts
r integer No Brand color red component (0-255)
g integer No Brand color green component (0-255)
b integer No Brand color blue component (0-255)
terms_and_conditions text No Terms and conditions text
contact_us text No "Contact us" section text for customer portal
mention text No Legal mentions on invoices
prorata_temporis_mention text No Prorata temporis mention text
mention_footer text No Footer mentions
footer text No Invoice footer text
footer_for_quotes_and_contracts text No Footer text for quotes and contracts
mention_for_contracts text No Legal mentions for contracts
footer_on_all_pages boolean No Whether to show the footer on all invoice pages
esign_default_body text No Default email body for e-signature requests
default_deposit_method string No Default deposit method (enum: deposit_method)
default_payment_method string No Default payment method (enum: payment_method)
hide_buying_prices_from_sales boolean No Hide buying prices from sales users
ticketing_new_contact_customer_area_enabled boolean No Allow new contact creation from customer area ticketing
ticketing_auto_closure_enabled boolean No Enable automatic ticket closure
ticketing_auto_closure_alerts array No Configuration for auto-closure alerts
welcome_title1 string No Customer portal welcome section title 1
welcome_text1 text No Customer portal welcome section text 1
welcome_title2 string No Customer portal welcome section title 2
welcome_text2 text No Customer portal welcome section text 2
welcome_title3 string No Customer portal welcome section title 3
welcome_text3 text No Customer portal welcome section text 3
social_facebook string No Facebook page URL
social_linked_in string No LinkedIn page URL
social_twitter string No Twitter/X profile URL
newsletter_logo string No Newsletter logo image path
newsletter_unsubscribe_title string No Newsletter unsubscribe page title
newsletter_unsubscribe_text text No Newsletter unsubscribe page text
created_at datetime auto Creation timestamp
updated_at datetime auto Last update timestamp

Organisations

Base URL: /api/v1/organisations

Organisations are the top-level tenant entities in BlueRockTEL. There is typically only one or a few organisations per installation.

GET /v1/organisations

List all organisations.

Response 200: Array of organisation objects (organisation_resource collection, all records, no pagination).

Examples:

curl -s -X GET "https://your-instance.bluerocktel.net/api/v1/organisations" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
import requests

response = requests.get(
    "https://your-instance.bluerocktel.net/api/v1/organisations",
    headers={"Authorization": f"Bearer {token}", "Accept": "application/json"},
)
organisations = response.json()
use Illuminate\Support\Facades\Http;

$response = Http::withToken($token)
    ->acceptJson()
    ->get('https://your-instance.bluerocktel.net/api/v1/organisations');

$organisations = $response->json();
const response = await fetch(
  "https://your-instance.bluerocktel.net/api/v1/organisations",
  {
    headers: {
      Authorization: `Bearer ${token}`,
      Accept: "application/json",
    },
  }
);
const organisations = await response.json();

GET /v1/organisations/{id}

Get a single organisation by ID.

URL parameters:

Parameter Type Description
id integer Organisation ID

Response 200: Organisation object. Response 404: Not found.


PUT /v1/organisations/{id}

Update an organisation. Only fields listed in Organisation::updatable() are updated.

URL parameters:

Parameter Type Description
id integer Organisation ID

Body (JSON): Validated via Organisation::attributes('common').

Response 201: Updated organisation object. Response 404: Not found. Response 422/500: Error.


Brands

Base URL: /api/v1/brands

Brands are sub-entities of organisations. Each customer file can be linked to a brand (affects invoice styling, logos, etc.).

Note: creating and deleting brands is not available via the API.

GET /v1/brands

List all brands.

Response 200: Array of all brand objects.


GET /v1/brands/{id}

Get a single brand by ID.

URL parameters:

Parameter Type Description
id integer Brand ID

Response 200: Brand object. Response 404: Not found.


PUT /v1/brands/{id}

Update a brand. Handles image uploads:

  • logo: resized to max 500px width, stored on Swift and FTP disks.
  • message_on_invoice: resized to 2126x709px, stored on Swift and FTP disks.

URL parameters:

Parameter Type Description
id integer Brand ID

Body (multipart/form-data or JSON): Validated via Brand::attributes('common').

Field Type Description
logo file/image Brand logo (optional)
message_on_invoice file/image Invoice message image (optional)
... ... Other brand fields

Response 201: Updated brand object. Response 404: Not found. Response 422/500: Error.

Examples:

curl -s -X PUT "https://your-instance.bluerocktel.net/api/v1/brands/1" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -F "logo=@/path/to/logo.png" \
  -F "message_on_invoice=@/path/to/invoice-banner.png"
import requests

with open("logo.png", "rb") as logo, open("invoice-banner.png", "rb") as banner:
    response = requests.put(
        "https://your-instance.bluerocktel.net/api/v1/brands/1",
        files={
            "logo": ("logo.png", logo, "image/png"),
            "message_on_invoice": ("invoice-banner.png", banner, "image/png"),
        },
        headers={"Authorization": f"Bearer {token}", "Accept": "application/json"},
    )
brand = response.json()
$response = Http::withToken($token)
    ->acceptJson()
    ->attach('logo', file_get_contents('/path/to/logo.png'), 'logo.png')
    ->attach('message_on_invoice', file_get_contents('/path/to/invoice-banner.png'), 'invoice-banner.png')
    ->put('https://your-instance.bluerocktel.net/api/v1/brands/1');

$brand = $response->json();
const formData = new FormData();
formData.append("logo", logoFile);
formData.append("message_on_invoice", invoiceBannerFile);

const response = await fetch(
  "https://your-instance.bluerocktel.net/api/v1/brands/1",
  {
    method: "PUT",
    headers: {
      Authorization: `Bearer ${token}`,
      Accept: "application/json",
    },
    body: formData,
  }
);
const brand = await response.json();