openapi: 3.0.3 info: title: Commusoft Authentication Locations API description: The Commusoft API is a RESTful JSON-based API designed to allow third parties to integrate products and applications with Commusoft's field service management platform. It enables programmatic management of jobs, customers, engineers, quotes, invoices, parts, and service histories for trades businesses including HVAC, plumbing, electrical, and building maintenance contractors. The API supports integrations with accounting tools (QuickBooks, Xero, Sage), payment processors (Stripe, GoCardless), and workflow automation platforms (Zapier). version: 1.0.0 contact: url: https://www.commusoft.com/ x-api-id: commusoft-api x-audience: external-partner servers: - url: https://api.commusoft.com/api/v1 description: Commusoft production API server security: - ApiTokenHeader: [] - ApiTokenQuery: [] tags: - name: Locations description: Manage location/site records paths: /locations: get: operationId: listLocations summary: List Locations description: Retrieve location/site records. tags: - Locations responses: '200': description: List of locations content: application/json: schema: type: array items: $ref: '#/components/schemas/Location' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createLocation summary: Create Location description: Add a new location record. tags: - Locations requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LocationInput' responses: '201': description: Location created content: application/json: schema: $ref: '#/components/schemas/Location' '401': $ref: '#/components/responses/Unauthorized' /locations/{uuid}: get: operationId: getLocation summary: Get Location description: Retrieve a specific location record by UUID. tags: - Locations parameters: - $ref: '#/components/parameters/UuidPath' responses: '200': description: Location record content: application/json: schema: $ref: '#/components/schemas/Location' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: updateLocation summary: Update Location description: Edit an existing location record. tags: - Locations parameters: - $ref: '#/components/parameters/UuidPath' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LocationInput' responses: '200': description: Location updated content: application/json: schema: $ref: '#/components/schemas/Location' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: Error: type: object properties: message: type: string description: Human-readable error message code: type: integer description: Error code LocationInput: type: object required: - name properties: uuid: type: string format: uuid name: type: string address: $ref: '#/components/schemas/Address' description: type: string Location: type: object properties: id: type: integer readOnly: true uuid: type: string format: uuid readOnly: true name: type: string description: Name of the location address: $ref: '#/components/schemas/Address' description: type: string description: Additional notes about the location createdAt: type: string format: date-time readOnly: true updatedAt: type: string format: date-time readOnly: true Address: type: object properties: addressLine1: type: string description: First line of the address addressLine2: type: string description: Second line of the address town: type: string description: Town or city county: type: string description: County or region postcode: type: string description: Postcode or zip code country: type: string description: Country responses: Unauthorized: description: Authentication token missing or invalid content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' parameters: UuidPath: name: uuid in: path required: true description: Unique identifier (UUID) of the record schema: type: string format: uuid securitySchemes: ApiTokenHeader: type: apiKey in: header name: X-Auth-Token description: API token obtained from the /getToken endpoint ApiTokenQuery: type: apiKey in: query name: token description: API token passed as a query parameter