GLYDE Unity + AviontéBOLD

GLYDE Unity provides a comprehensive, bi-directional integration with AviontéBOLD, the staffing industry's enterprise applicant tracking and workforce management platform. This inte...

Guide v1.0.3 Unity API v1.17.6 Updated March 27, 2026

Overview

GLYDE Unity provides a comprehensive, bi-directional integration with AviontéBOLD, the staffing industry's enterprise applicant tracking and workforce management platform. This integration enables recruiters, hiring managers, and AI agents to access Avionté talent records, job postings, applications, and activities through a unified API layer.

The integration spans the full GLYDE ecosystem: Microsoft Teams, Copilot for Microsoft 365, Power Automate, the GLYDE Unity SDK, and the Model Context Protocol (MCP) for AI agent consumption. All operations are tenant-isolated using client_uuid and authenticated via OAuth2 client credentials with automatic token management.

Avionté data flows through GLYDE Unity's index-centric normalization pipeline, ensuring consistent data representation across all consumers regardless of Avionté's native field naming conventions (e.g., "Talent" instead of "Candidate", "Assignment" instead of "Placement").

Architecture & Data Flow

GLYDE Unity acts as an orchestration layer between consuming platforms (Teams, Copilot, Power Platform, SDK) and the AviontéBOLD REST API. Requests are authenticated, normalized, and routed through the integration adaptor which handles entity-specific business logic, data mapping, and error classification.

Teams / Copilot / Power Platform / SDK / MCP Client
                    |
                    v
    ┌─────────────────────────────────────┐
    │     GLYDE Unity REST API            │
    │   api.glydeunity.com/api/unity/*    │
    │                                     │
    │  ┌─ Auth Middleware ─────────────┐   │
    │  │  API Key / JWT / Trusted App │   │
    │  │  Role-based access control   │   │
    │  └──────────────────────────────┘   │
    │                                     │
    │  ┌─ Workflow Route Handler ──────┐  │
    │  │  Validation + Orchestration   │  │
    │  └──────────────────────────────┘   │
    │              |                       │
    │              v                       │
    │  ┌─ Avionté Integration Adaptor ─┐  │
    │  │  candidates.ts / jobs / etc.  │  │
    │  │  Template Method Pattern      │  │
    │  │  Data Mapping (Index-centric) │  │
    │  └──────────────────────────────┘   │
    │              |                       │
    │              v                       │
    │  ┌─ Avionté External Connector ──┐  │
    │  │  avionte-connector.ts         │  │
    │  │  ConnectorAuthManager (OAuth2)│  │
    │  │  OpenAPI-driven operations    │  │
    │  └──────────────────────────────┘   │
    └──────────────|──────────────────────┘
                   |
                   v
    ┌──────────────────────────────────────┐
    │      AviontéBOLD REST API            │
    │   {tenant}.avionte.com/api/v1/*      │
    │                                      │
    │   Talent | Job | Application |       │
    │   Company | Assignment | Activity    │
    └──────────────────────────────────────┘
1
Platform Request

Teams, Copilot, Power Automate, or SDK sends a request to the GLYDE Unity API (e.g., POST /api/unity/candidates) with API key + user context headers.

2
Authentication & Routing

Unity validates the API key, resolves client_uuid and user_uuid, checks role-based access, and routes to the appropriate workflow handler.

3
Adaptor Selection

The workflow handler calls getIntegrationAdaptor('avionte') to obtain the Avionté-specific adaptor based on the client's configured ATS integration type.

4
Auto-Authentication

The ConnectorAuthManager automatically retrieves or refreshes OAuth2 tokens for the client's Avionté tenant. Sessions are cached in Redis with automatic expiration.

5
ATS API Call

The Avionté connector executes the operation against the AviontéBOLD REST API using the OpenAPI specification for request validation and dynamic operation handling.

6
Data Normalization

Response data flows through the index-centric pipeline: ATS response → CandidateDataMapperATSCacheCandidateSearchIndex (canonical format) → searchIndexToCandidate() → CRUD schema.

7
Response Delivery

The normalized response is returned to the consuming platform in the GLYDE Unity standard response format, with consistent field names and structures regardless of ATS-specific conventions.

Authentication

OAuth2 Client Credentials

Avionté uses OAuth2 client credentials flow for machine-to-machine authentication. GLYDE Unity's ConnectorAuthManager handles the complete token lifecycle automatically: initial authentication, session caching in Redis, token refresh before expiration, and tenant header injection. Clients never need to manage tokens directly.

Credential Fields

FieldDescriptionRequired
client_id OAuth2 client identifier issued by Avionté Yes
client_secret OAuth2 client secret for token exchange Yes
tenant Avionté tenant identifier (injected as Tenant header on all API calls) Yes
x_api_key Optional API key sent as X-Api-Key header for additional authorization No
service_url Base URL for the AviontéBOLD API (defaults to standard endpoint) No
auth_url OAuth2 token endpoint URL (defaults to /authorize/token) No

Session Management

Sessions are cached in Redis with the key pattern session:client:{client_uuid}:integration:avionte (encrypted Unity session blob). The session includes the OAuth2 access token, expiration timestamp, tenant identifier, and resolved service URL. TTL follows the platform profile (default connector cache window). Sessions are re-validated on each request via ConnectorAuthManager.

Token Refresh

The AvionteConnectorAuthManager checks token expiration before each API call. If the token is expired or within the refresh threshold, a new token is obtained via the client credentials flow. The OAuth2 scope is avionte.aero.compasintegrationservice. JWT tokens are validated for expiration using the exp claim.

Capabilities

Candidates (Talent) full
OperationEndpointATS Op
Create Candidate
Create a new talent record in Avionté with GLYDE DB sync and search indexing
POST /api/unity/candidates createTalent
Get Candidate
Retrieve talent by GLYDE UUID or Avionté talent ID with data aggregation
GET /api/unity/candidates/:candidateUUID getTalent
Update Candidate
Update talent record (full PUT, not PATCH) with change propagation
PUT /api/unity/candidates/:candidateUUID updateTalent
Search Candidates
Search talent records using Avionté query parameters
POST /api/unity/search/aiSearchIndex QueryMultipleTalents
Jobs partial
OperationEndpointATS Op
Create Job
Create a new job posting in Avionté
POST /api/unity/jobs createJob
Get Job
Retrieve job by UUID or Avionté job ID
GET /api/unity/jobs/:jobUUID getJob
Update Job
Update job posting (full PUT)
PUT /api/unity/jobs/:jobUUID updateJob
Applications partial
OperationEndpointATS Op
Create Application
Create a new application linking a talent to a job
POST /api/unity/applications createApplication
Get Application
Retrieve application by UUID
GET /api/unity/applications/:applicationUUID getApplication
Messages (Email) full
OperationEndpointATS Op
Send Email
Send email via Mailgun with automatic activity logging to Avionté
POST /api/unity/messages/send-email Mailgun + /v1/talent/{id}/activity
Activities (Notes) full
OperationEndpointATS Op
Add Candidate Note
Create an activity note on a talent record in Avionté
POST /api/unity/candidates/:candidateUUID/notes /v1/talent/{talentId}/activity
Log Email Activity
Log email communication as an activity note with Mailgun tracking
POST /api/unity/candidates/:candidateUUID/notes /v1/talent/{talentId}/activity
Search (AI-Powered) proxy only
OperationEndpointATS Op
Conversational AI Search
Natural language search across candidates and jobs using GLYDE AI
POST /api/unity/search/conversationalAISearch Azure AI Search Index (not direct ATS)
ATS Proxy Search
Direct search against Avionté API via ATS proxy
POST /api/unity/proxy/avionte/QueryMultipleTalents QueryMultipleTalents
ATS Proxy (Discovery) full
OperationEndpointATS Op
Discover Operations
List all available Avionté API operations with schemas and metadata
GET /api/unity/proxy/discover/avionte OpenAPI spec introspection
Execute Operation
Execute any discovered Avionté operation dynamically
POST /api/unity/proxy/avionte/:operationId Dynamic (per operationId)
Entity Metadata
Get field-level metadata for an Avionté entity type
GET /api/unity/proxy/meta/avionte/:entity OpenAPI schema introspection

Platform Access

GLYDE Unity provides unified access to AviontéBOLD across multiple Microsoft 365 and developer platforms.

💬 Microsoft Teams

Access Avionté data through the GLYDE Unity bot in Teams channels and chats.

Access: Teams Bot Framework → GLYDEBuddy Proxy → Unity REST API → Avionté Adaptor

  • Search candidates and jobs via conversational AI
  • View candidate profiles and application status
  • Send emails with automatic Avionté activity logging
  • Create and update talent records
  • Receive notifications for ATS events
Copilot for Microsoft 365

Use natural language to interact with Avionté data through the GLYDE Copilot declarative agent.

Access: Copilot Agent → MCP Bridge (GLYDEBuddy) → Unity REST API → Avionté Adaptor

  • Natural language queries ("Find Java developers in Chicago")
  • AI-powered candidate matching and ranking
  • Multi-step workflows (search → review → contact)
  • ATS proxy operations for advanced queries
  • Entity metadata inspection for field discovery
Power Automate / Power Apps

Automate Avionté workflows using the GLYDE Unity Power Platform connector.

Access: Power Platform Connector → Unity REST API → Avionté Adaptor

  • Trigger flows on candidate or job events
  • Create candidates from forms or external sources
  • Sync data between Avionté and other business systems
  • Build custom Power Apps for recruiter workflows
  • Schedule bulk operations and reports
📦 GLYDE Unity SDK

Programmatic access via the @glydeunity/glyde-api-client npm package.

Access: SDK Client → Unity REST API → Avionté Adaptor

  • Type-safe TypeScript API client with Zod validation
  • FlexibleUnityApi for multiple input formats (UUID, ATS ID, object)
  • Direct workflow operations and ATS proxy access
  • Automatic authentication and session management
  • OpenAPI-generated client with full IntelliSense
🤖 MCP (Model Context Protocol)

AI agents and LLMs access Avionté operations through the MCP interface.

Access: MCP Client → Unity MCP Endpoints → Workflow Handlers → Avionté Adaptor

  • 100+ discoverable tools auto-generated from workflow routes
  • ATS proxy tools for dynamic operation discovery and execution
  • Entity metadata tools for field-level schema inspection
  • Filtered schemas (x-NoMCP fields excluded for security)
  • JSON-RPC and REST invocation protocols
🎤 GLYDE Voice Agent

Voice-based interaction with Avionté data for candidate screening and discovery.

Access: Voice SDK → Unity Voice API → Deepgram → Function Execution → Avionté Adaptor

  • Voice-powered candidate screening interviews
  • Job discovery and application via voice
  • Real-time candidate creation during conversations
  • OTP verification for candidate identity
  • Context-aware conversation modes (screening, discovery, application)

Entity Mappings

AviontéBOLD uses different entity names and field conventions. GLYDE Unity normalizes these through the index-centric data pipeline.

Candidate → Talent

Unity FieldAviontéBOLD FieldDirectionNotes
first_name firstName Bidirectional Required
last_name lastName Bidirectional Required
email email Bidirectional Required, used for deduplication
phone phone Bidirectional
address address.street Bidirectional
city address.city Bidirectional
state address.state Bidirectional
zip address.zipCode Bidirectional
candidate_uuid id (via ExternalMapping) Read Mapped through GLYDE ExternalMapping table

Job → Job

Unity FieldAviontéBOLD FieldDirectionNotes
title title Bidirectional
description description Bidirectional
status status Bidirectional Default: "Open"
category department Bidirectional
employment_type jobType Bidirectional
salary_min / salary_max salary.min / salary.max Bidirectional Parsed as float, currency: USD
address + city + state location Write Concatenated on write

Application → Application

Unity FieldAviontéBOLD FieldDirectionNotes
application_uuid id Read
candidate_uuid talentId Write
job_uuid jobId Write

Placement → Assignment

Unity FieldAviontéBOLD FieldDirectionNotes
placement_uuid id Read Avionté uses "Assignment" terminology

Endpoint Reference

MethodUnity EndpointDescriptionATS OperationAuth
POST /api/unity/candidates Create candidate createTalent API Key + User UUID
GET /api/unity/candidates/:uuid Get candidate by ID getTalent API Key + User UUID
PUT /api/unity/candidates/:uuid Update candidate updateTalent API Key + User UUID
POST /api/unity/jobs Create job createJob API Key + User UUID
GET /api/unity/jobs/:uuid Get job by ID getJob API Key + User UUID
PUT /api/unity/jobs/:uuid Update job updateJob API Key + User UUID
POST /api/unity/applications Create application createApplication API Key + User UUID
GET /api/unity/applications/:uuid Get application getApplication API Key + User UUID
POST /api/unity/candidates/:uuid/notes Add candidate note /v1/talent/{id}/activity API Key + User UUID
POST /api/unity/messages/send-email Send email + log activity Mailgun + Activity API API Key + User UUID
POST /api/unity/search/conversationalAISearch AI-powered search Azure AI Search API Key + User UUID
GET /api/unity/proxy/discover/avionte Discover ATS operations OpenAPI introspection API Key + User UUID
POST /api/unity/proxy/avionte/:opId Execute ATS operation Dynamic API Key + User UUID
GET /api/unity/proxy/meta/avionte/:entity Get entity metadata Schema introspection API Key + User UUID

Events & Webhooks

Avionté webhook/event support is currently in stub implementation. The normalizer (avionte-normalizer.ts) is prepared for future inbound event processing but does not currently process live webhooks. Outbound events (GLYDE → Avionté) are supported through activity logging on candidate operations.

Configuration Requirements

  • OAuth2 Client CredentialsREQUIRED

    Avionté issues client_id and client_secret for API access. These must be stored in Azure Key Vault via the GLYDE Unity client configuration.

    client_id: "glyde-integration-client"

  • Tenant IdentifierREQUIRED

    The Avionté tenant identifier is required for all API calls and is injected as the Tenant HTTP header. This is typically the company's Avionté instance identifier.

    tenant: "acme-staffing"

  • Activity Type ConfigurationREQUIRED

    Client-specific activity type IDs for logging notes in Avionté. Configured in the client's integration_data.AvionteConfiguration object.

    AvionteConfiguration.general_activity_type: 42

  • New Submission User IDREQUIRED

    The Avionté user ID used as the author for GLYDE-created activities. Configured in integration_data.AvionteConfiguration.new_submission_user.

    AvionteConfiguration.new_submission_user: 1001

  • Human Review Activity TypeREQUIRED

    Activity type ID for "Glyde Contact Requested" notes (human_review flag). Configured per-client in AvionteConfiguration.Talent.human_review_activity_type.

    AvionteConfiguration.Talent.human_review_activity_type: 15

  • Integration TypeREQUIRED

    The client's integration_type must be set to "avionte" in the GLYDE client configuration for the adaptor router to select the correct integration.

    integration_type: "avionte"

  • API Base URL (Optional)

    Override the default AviontéBOLD API base URL if using a non-standard endpoint.

    service_url: "https://api.avionte.com"

Known Limitations

  • Candidate entity is called "Talent" in Avionté — all API operations use this naming convention.
  • Placement entity is called "Assignment" in Avionté.
  • Record updates use full PUT (not PATCH) — all fields must be provided on updates, not just changed fields.
  • Application updates return NOT_IMPLEMENTED — Avionté does not support direct application modifications through the current API version.
  • Webhook/inbound event processing is stub-only — the normalizer is prepared but not yet processing live events.
  • The Avionté OpenAPI spec uses camelCase field naming, which differs from GLYDE Unity's snake_case convention. Mapping is handled automatically.
  • Pagination uses offset/limit pattern with a default limit of 25 records per page.
  • The Tenant header is required for all API calls and is automatically injected by the connector.

Version History

v1.0.3 2026-03-27
  • Empty Tier-1 detection: Avionté returns isn't a web applicant (contraction); phrase matching updated so production no longer warns on this expected 404.
v1.0.2 2026-03-27
  • Applications: getWebApplicationsForTalent HTTP 404 with “not a web applicant” is treated as empty Tier 1 (success with no rows), not an API error.
  • Base connector: expected Tier-1 empty responses log at debug instead of warn to reduce production noise.
v1.0.0 2026-02-24
  • Initial integration guide creation
  • Documented OAuth2 client credentials authentication flow
  • Documented candidate CRUD operations with index-centric data mapping
  • Documented job and application operations
  • Documented email messaging with Avionté activity logging
  • Documented activity/note creation with configurable activity types
  • Documented ATS proxy discovery and dynamic operation execution
  • Documented platform access patterns (Teams, Copilot, Power Platform, SDK, MCP, Voice)
  • Documented entity mappings (Talent, Job, Application, Assignment)
  • Documented configuration requirements and known limitations