API endpoint
The GraphQL endpoint is available at:condo application the default port in local development is 4006, so the full URL is:
POST with a JSON body containing a query (or mutation) string and optional variables object. Authenticated requests carry a session cookie obtained from one of the sign-in mutations.
GraphQL Playground
Keystone ships with a built-in GraphQL Playground (GraphiQL) at the same path when theNODE_ENV is not production:
API capabilities
Queries
List and filter records with
allModels(where: ..., first: ..., skip: ...), retrieve counts with _allModelsMeta, and fetch single items by ID.Mutations
Create, update, and batch-create/update records. Soft deletes are performed by setting
deletedAt. Hard deletes are disabled for most models.Custom mutations
Domain-specific operations such as
authenticateUserWithEmailAndPassword, registerNewServiceUser, startConfirmPhoneAction, and more.Schema introspection
Full introspection support. Use the
__schema and __type queries to programmatically discover types, fields, and input shapes.Key entity types
| Type | Description |
|---|---|
Organization | Property management company. All data is scoped to an organization. |
Property | A managed building or residential complex. |
Ticket | A maintenance or service request raised by a resident or staff. |
Contact | A resident or contact associated with a property. |
BillingReceipt | A billing document sent to a resident. |
User | A platform user (staff, resident, or service account). |
OrganizationEmployee | Links a User to an Organization with a specific role. |
B2BApp | A mini-app integrated into the Condo marketplace. |
Query patterns
All list queries follow a consistent shape:Mutation patterns
Create and update mutations accept aninput or data object. The dv (data version) and sender fields are required on all mutations that modify data:
Filtering
Every model exposes aWhereInput type with operators for each field:
| Operator suffix | Meaning |
|---|---|
| (none) | Exact match |
_not | Not equal |
_contains | Substring match (case-sensitive) |
_contains_i | Substring match (case-insensitive) |
_starts_with | Prefix match |
_in | Value is in list |
_not_in | Value is not in list |
_gt, _lt, _gte, _lte | Numeric / date comparisons |
AND and OR:
Access control
All data in Condo is organization-scoped. The rules enforced by the API:- Organization membership — users can only read and write data that belongs to organizations they are employees of.
- Role-based permissions — the
OrganizationEmployeerole determines which mutations and fields a user can access within an organization. - Service users — programmatic integrations use a
SERVICE-type user account that can be granted elevated rights viaUserRightsSet. - Soft deletes — records are never physically removed by default; they are marked with a
deletedAttimestamp and excluded from list query results automatically.
Recommended client
Apollo Client is the recommended library for consuming the Condo GraphQL API. The@open-condo/apollo package (used internally throughout the monorepo) provides pre-configured Apollo instances with session cookie handling.