Organizations

Manage organization settings and configuration

Overview

Organizations represent your pool service business. Each organization contains its own customers, appointments, users, and settings. Organization settings control branding, integrations, and default behaviors.

Get Organization

Retrieve the current user's organization details.

query Organization {
  organization {
    id
    name
    slug
    email
    phone
    website
    logo
    address {
      street
      city
      state
      zipCode
    }
    timezone
    currency
    quickbooksConnected
    stripeConnected
    settings {
      invoicePrefix
      quotePrefix
      defaultTaxId
      autoSendInvoices
      invoiceDueDays
    }
    subscription {
      plan
      status
      currentPeriodEnd
    }
    createdAt
    updatedAt
  }
}

Response:

{
  "data": {
    "organization": {
      "id": "org_001",
      "name": "Austin Pool Services",
      "slug": "austin-pool-services",
      "email": "info@austinpools.com",
      "phone": "512-555-0100",
      "website": "https://austinpools.com",
      "logo": "https://storage.example.com/logos/org_001.png",
      "address": {
        "street": "100 Business Park Dr",
        "city": "Austin",
        "state": "TX",
        "zipCode": "78701"
      },
      "timezone": "America/Chicago",
      "currency": "USD",
      "quickbooksConnected": true,
      "stripeConnected": true,
      "settings": {
        "invoicePrefix": "INV",
        "quotePrefix": "QUO",
        "defaultTaxId": "tax_001",
        "autoSendInvoices": true,
        "invoiceDueDays": 30
      },
      "subscription": {
        "plan": "PROFESSIONAL",
        "status": "ACTIVE",
        "currentPeriodEnd": "2024-02-15T00:00:00Z"
      },
      "createdAt": "2023-01-15T10:00:00Z",
      "updatedAt": "2024-01-18T14:00:00Z"
    }
  }
}

Update Organization

Update organization details.

mutation UpdateOrganization($input: UpdateOrganizationInput!) {
  updateOrganization(input: $input) {
    id
    name
    email
    phone
    website
    updatedAt
  }
}

# Variables
{
  "input": {
    "name": "Austin Pool Services LLC",
    "phone": "512-555-0200",
    "website": "https://www.austinpoolservices.com"
  }
}

Response:

{
  "data": {
    "updateOrganization": {
      "id": "org_001",
      "name": "Austin Pool Services LLC",
      "email": "info@austinpools.com",
      "phone": "512-555-0200",
      "website": "https://www.austinpoolservices.com",
      "updatedAt": "2024-01-20T10:00:00Z"
    }
  }
}

Update Organization Settings

Update organization-specific settings.

mutation UpdateOrganizationSettings($input: UpdateOrganizationSettingsInput!) {
  updateOrganizationSettings(input: $input) {
    invoicePrefix
    quotePrefix
    defaultTaxId
    autoSendInvoices
    invoiceDueDays
    emailFromName
    emailReplyTo
  }
}

# Variables
{
  "input": {
    "invoicePrefix": "APS-INV",
    "quotePrefix": "APS-QUO",
    "invoiceDueDays": 15,
    "autoSendInvoices": false,
    "emailFromName": "Austin Pool Services",
    "emailReplyTo": "billing@austinpools.com"
  }
}

Response:

{
  "data": {
    "updateOrganizationSettings": {
      "invoicePrefix": "APS-INV",
      "quotePrefix": "APS-QUO",
      "defaultTaxId": "tax_001",
      "autoSendInvoices": false,
      "invoiceDueDays": 15,
      "emailFromName": "Austin Pool Services",
      "emailReplyTo": "billing@austinpools.com"
    }
  }
}

Organization Settings Reference

SettingTypeDescription
invoicePrefixStringPrefix for invoice numbers
quotePrefixStringPrefix for quote numbers
defaultTaxIdIDDefault tax to apply
autoSendInvoicesBooleanAuto-send invoices when created
invoiceDueDaysIntDays until invoice is due
emailFromNameStringSender name for emails
emailReplyToStringReply-to email address

REST Endpoints

Upload organization logo.

POST/organization/logo

Upload organization logo

curl -X POST "https://api.poolservicemanager.com/organization/logo" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@logo.png"

Field Reference

FieldTypeDescription
idID!Unique identifier
nameString!Organization name
slugString!URL-friendly identifier
emailString(nullable)Primary contact email
phoneString(nullable)Primary phone number
websiteString(nullable)Website URL
logoString(nullable)Logo image URL
addressAddress(nullable)Business address
timezoneString!Organization timezone
currencyString!Default currency (e.g., USD)
settingsOrganizationSettings!Organization settings
subscriptionSubscription(nullable)Active subscription
quickbooksConnectedBoolean!QuickBooks integration status
stripeConnectedBoolean!Stripe integration status
createdAtDateTime!Creation timestamp
updatedAtDateTime!Last update timestamp