Create connections and label space
Set positive or negative relationships between people, teams, and spaces, and tag spaces with labels to guide AI allocation decisions.
Prerequisites
Completed Setup Your Development Environment and Send Your First API Request
Node.js v18+ and npm v9+
A valid gospace API key in your
.envfileKnown IDs (or external IDs) for the entities you want to relate
1) Create connections (positive & negative)
Create create-connections.ts:
import "dotenv/config";
import GospaceAI from "@gospace-ai/api";
async function main() {
const gospace = new GospaceAI(process.env.GOSPACE_API_KEY!);
const res = await gospace.connections.createConnections({
connections: [
// Positive: person prefers to sit near a team
{
strength: 75,
connection_from_entity: {
connection_entity_id: "person_123",
connection_entity_type: "PERSON",
connection_entity_data: {
first_name: "Alice",
last_name: "Smith",
email: "[email protected]",
person_id: "person_123",
external_id: "ext-alice",
},
},
connection_to_entity: {
connection_entity_id: "team_456",
connection_entity_type: "TEAM",
connection_entity_data: {
team_name: "Engineering",
team_id: "team_456",
external_id: "ext-team-eng",
},
},
},
// Negative: team should avoid a particular room
{
strength: -50,
connection_from_entity: {
connection_entity_id: "team_456",
connection_entity_type: "TEAM",
connection_entity_data: {
team_name: "Engineering",
team_id: "team_456",
},
},
connection_to_entity: {
connection_entity_id: "room_789",
connection_entity_type: "ROOM",
connection_entity_data: {
room_name: "Conference Room A",
room_id: "room_789",
},
},
},
],
});
console.log(JSON.stringify(res.data.connections, null, 2));
}
main().catch((err) => {
console.error("Create connections failed:", err);
process.exit(1);
});2) Query connections (by entity, type, or external_id)
Create get-connections.ts:
3) Update connection strength / endpoints
Create update-connections.ts:
4) Delete connections
Create delete-connections.ts:
5) Create labels (for tagging entities)
Create create-labels.ts:
6) Label space (map a label to SPACE/ROOM/ZONE/TEAM/PERSON)
Create map-labels.ts:
7) Query & manage label mappings
Get mappings (filter by label, entity, type, or external_id):
Update mappings:
Delete mappings:
Tips & patterns
Model behaviour:
Positive connections (
> 0) indicate affinity or proximity preference.Negative connections (
< 0) indicate separation or avoidance.
Granularity:
Use people ↔ team for day‑to‑day seating preferences.
Use team ↔ room/zone/space for capacity and neighborhood tuning.
Use labels to tag assets (e.g., “Quiet”, “Client‑facing”, “Accessible”).
Searchability:
Use
external_idon people/teams, then querygetConnectionswithexternal_idto keep your system in sync.
Governance:
Keep connection strengths within a standard range (e.g., -100, -50, -25, 25, 50, 100) so they’re interpretable.
Periodically audit old connections and label mappings to avoid stale constraints.
Last updated
Was this helpful?