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 Chrome Extension, 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").
Product Demos
Short walkthroughs of the GLYDE experience across the surfaces this integration powers.
Watch it work
1 / 6Architecture & 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 / Chrome Ext / 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 │ │
│ └──────────────────────────────┘ │
│ ^ │
│ │ webhooks (inbound) │
│ ┌─ Event Normalizer ────────────┐ │
│ │ AvionteEventNormalizer │ │
│ │ FrontOfficeTenantId → │ │
│ │ tenant resolution │ │
│ └──────────────────────────────┘ │
└──────────────|──────────────────────┘
|
v
┌──────────────────────────────────────┐
│ AviontéBOLD REST API │
│ {tenant}.avionte.com/api/v1/* │
│ │
│ Talent | Job | Application | │
│ Company | Assignment | Activity │
└──────────────────────────────────────┘
Teams, Copilot, Power Automate, the GLYDE Chrome Extension, or SDK sends a request to the GLYDE Unity API (e.g., POST /api/unity/candidates) with API key + user context headers (extension calls use a scoped publishable key).
Unity validates the API key, resolves client_uuid and user_uuid, checks role-based access, and routes to the appropriate workflow handler.
The workflow handler calls getIntegrationAdaptor('avionte') to obtain the Avionté-specific adaptor based on the client's configured ATS integration type.
The ConnectorAuthManager automatically retrieves or refreshes OAuth2 tokens for the client's Avionté tenant. Sessions are cached in Redis with automatic expiration.
The Avionté connector executes the operation against the AviontéBOLD REST API using the OpenAPI specification for request validation and dynamic operation handling.
Response data flows through the index-centric pipeline: ATS response → CandidateDataMapper → ATSCacheCandidateSearchIndex (canonical format) → searchIndexToCandidate() → CRUD schema.
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.
Inbound Avionté webhooks (/api/unity/events/webhook/avionte) and extension-enqueued candidate IDs feed the ATS search-cache queue, keeping the GLYDE Azure AI Search indexes current between scheduled syncs.
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
| Field | Description | Required |
|---|---|---|
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
📦 Two API layers, one integration
This integration exposes AviontéBOLD through two distinct layers, and every capability below tells you which layer it runs on. Reading the table without this context is the most common source of confusion, so here is the distinction:
1. GLYDE Unity workflow endpoints (the Endpoint column) are GLYDE's own, ATS-agnostic APIs
(/api/unity/*). They are the recommended path for every consumer — Teams, Copilot, Power Automate, the Chrome Extension, and the SDK.
Each one is an orchestrated workflow: GLYDE handles authentication, tenant isolation, validation, data normalization into GLYDE's canonical format,
database sync, and search indexing. You talk to GLYDE in GLYDE's vocabulary; GLYDE talks to the ATS behind the scenes.
2. ATS proxied calls (the ATS Op column) are the raw AviontéBOLD REST operations the workflow
invokes under the hood. You normally never call these directly — but you can, through the
ATS proxy (/api/unity/proxy/avionte/:operationId and the discover/inspect meta-operations).
The proxy executes any operation from AviontéBOLD's OpenAPI specification verbatim: request and response shapes are the vendor's own,
no GLYDE normalization is applied. Use it for advanced or niche operations GLYDE has not (yet) wrapped in a workflow — it inherits GLYDE's
authentication, tenant isolation, and OAuth token management, but you are speaking the vendor's dialect, so field names, casing, and payloads match
the AviontéBOLD spec exactly.
Rule of thumb: start with the workflow layer; drop to the proxy only when a workflow for what you need does not exist.
Status badges on each capability card grade the workflow layer coverage for that entity:
- full — complete workflow coverage: create, read, update (where the ATS API allows it), and GLYDE-side persistence/indexing all work.
- partial — the entity is supported, but one or more workflow operations are unavailable, not supported by the ATS API itself, or served differently (e.g. reads resolved from the GLYDE search index instead of a live ATS call, missing job-note support, or a
NOT_IMPLEMENTEDupdate). Read each operation's notes for the specific gap. The raw operations may still be reachable through the ATS proxy. - proxy only — no GLYDE workflow wraps this entity; access is exclusively via raw proxied ATS calls with vendor-native payloads.
- not supported — neither a workflow nor a usable proxy operation exists for this entity.
| Operation | Endpoint | ATS Op |
|---|---|---|
| Create Candidate Create a new talent record in Avionté with GLYDE DB sync and search indexing |
POST /api/unity/candidates |
CreateTalent |
| Create-or-Reuse Candidate Create new talent, or reuse an existing one when Avionté returns 409 Duplicate talent |
POST /api/unity/candidates |
CreateTalent + QueryMultipleTalents |
| Get Candidate Retrieve talent by GLYDE UUID or Avionté talent ID with live/Redis cache merge |
GET /api/unity/candidates/:candidateUUID |
QueryMultipleTalents |
| Update Candidate Update talent record (full PUT, not PATCH) with change propagation |
PUT /api/unity/candidates/:candidateUUID |
UpdateTalent |
| Search Candidates Avionté exposes no search/filter API for Talent. Candidate search is served from the GLYDE Azure AI Search index |
POST /api/unity/search/aiSearchIndex |
None (index-only) |
| Operation | Endpoint | ATS Op |
|---|---|---|
| Create Job Create a new job posting in Avionté |
POST /api/unity/jobs |
CreateJob |
| Update Job Update job posting (full PUT). Resolves the job via UUID or ats_job_id; jobId is routed to the spec path param automatically |
PUT /api/unity/jobs/:jobUUID |
UpdateJob |
| Get Job Retrieved from the GLYDE search index (no live ATS get-by-id fallback) |
GET /api/unity/jobs/:jobUUID |
None (index-only) |
| Search Jobs Avionté exposes no search/filter API for Jobs. Job search is served from the GLYDE Azure AI Search index |
POST /api/unity/search/aiSearchIndex |
None (index-only) |
| Operation | Endpoint | ATS Op |
|---|---|---|
| Create Application Submit a web applicant linking talent to a job via CreateWebApplicant |
POST /api/unity/applications |
CreateWebApplicant |
| Get Application Retrieve application by UUID |
GET /api/unity/applications/:applicationUUID |
getApplication |
| Get Job Applications Retrieve web applicants for a job through the ATS-agnostic Unity workflow |
POST /api/unity/applications/job/latest |
GetWebApplicantsForJob |
| List Applications by Candidate Three-tier fetch with job enrichment and status resolution, feeding the ATS search cache pipeline |
POST /api/unity/ats/search-cache/enqueue-candidates (internal) |
GetWebApplicationsForTalent + GetTalentStagesForJob |
| Find Application Job-scoped web-applicant lookup on the ATS-agnostic filter surface |
POST /api/unity/applications/find |
GetTalentStagesForJob |
| Operation | Endpoint | ATS Op |
|---|---|---|
| Send Email Send email via Mailgun with automatic activity logging to Avionté |
POST /api/unity/messages/send-email |
Mailgun + /v1/talent/{id}/activity |
| Send SMS Send SMS via Twilio through the base messages adaptor |
POST /api/unity/sms/send |
Twilio (no Avionté activity log) |
| Operation | Endpoint | ATS Op |
|---|---|---|
| Create Note (Unified) Create a talent activity note via the unified notes workflow (ATS write + optional GLYDE timeline) |
POST /api/notes |
CreateTalentActivity |
| Add Candidate Note (Legacy) Legacy email/logging path that creates 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 |
| Operation | Endpoint | ATS 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 (Discovery & Execute) Direct execution of any of the 270 Avionté operations exposed in the cleaned OpenAPI spec — includes QueryMultipleTalents, QueryMultipleJobs, and picklist lookups, but no search/filter operation |
POST /api/unity/proxy/avionte/:operationId |
Any spec operationId (e.g. QueryMultipleTalents) |
| Operation | Endpoint | ATS Op |
|---|---|---|
| Receive Event Webhook Inbound Avionté webhook ingestion with tenant resolution and canonical normalization |
POST /api/unity/events/webhook/avionte |
Connector-owned normalizer (AvionteEventNormalizer) |
| Query Event Log List processed events for the tenant with type/entity/status filters |
GET /api/unity/events/log |
GLYDE event store |
| Operation | Endpoint | ATS Op |
|---|---|---|
| Register Trigger Subscription Register a Power Automate callback URL as an event destination |
POST /api/unity/events/power-automate/subscriptions/register |
Event dispatch |
| Sync Default Subscriptions Provision connector default event subscriptions in GLYDE and the ATS |
POST /api/unity/events/defaults/sync |
Subscription provisioning |
| List App Notifications Event-derived in-app notifications for the tenant |
GET /api/unity/events/notifications |
Event store |
| Operation | Endpoint | ATS 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 |
| Operation | Endpoint | ATS Op |
|---|---|---|
| Request Extension Registration Send an OTP to register the GLYDE Chrome Extension for Avionté cache sync |
POST /api/unity/ats/search-cache/request-extension-registration |
OTP delivery |
| Complete Extension Registration Verify OTP and issue an extension-scoped publishable key |
POST /api/unity/ats/search-cache/complete-extension-registration |
OTP verification |
| Enqueue Cache Candidates Queue candidate IDs harvested from myavionte.com for ATS search cache refresh |
POST /api/unity/ats/search-cache/enqueue-candidates |
BullMQ + Azure AI Search indexing |
Platform Access
GLYDE Unity provides unified access to AviontéBOLD across multiple Microsoft 365 and developer platforms.
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
- Paste Avionté record URLs — the bot parses myavionte.com links and resolves the underlying talent/job/placement
- Receive notifications for ATS events
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 (discover → inspect → execute)
- Entity aliasing resolves GLYDE terms to Avionté vocabulary (candidate → Talent) via atsProfile
- Connector capability gaps handled gracefully (501 entity-metadata fallbacks to atsProfile entities)
Automate Avionté workflows using the GLYDE Unity Power Platform connector.
Access: Power Platform Connector → Unity REST API → Avionté Adaptor
- Trigger flows on Avionté events (candidate.updated, application.submitted, job.created, etc.) via event subscriptions
- 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
The GLYDE Chrome Extension (MV3) with the Avionté detector keeps the GLYDE search index fresh while recruiters browse myavionte.com.
Access: Content Script (myavionte.com) → Service Worker (batching) → GLYDEBuddy /api/buddy/ats-cache/enqueue → Unity enqueue workflow → BullMQ → Azure AI Search
- Detects talent IDs from myavionte.com URLs, anchors, and data attributes as recruiters browse
- Batches up to 25 candidate IDs with a 2-minute flush window, deduplicated
- Feeds the ATS search-cache queue for automatic index refresh
- Deep-links into Avionté using tenant atsBaseUrl templates (/app/#/applicant/{id}, /app/#/job/{id})
- One-time OTP registration issues an extension-scoped publishable key
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
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
Voice-based interaction with Avionté data for candidate screening and discovery (ATS-agnostic).
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 Field | AviontéBOLD Field | Direction | Notes |
|---|---|---|---|
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 Field | AviontéBOLD Field | Direction | Notes |
|---|---|---|---|
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 Field | AviontéBOLD Field | Direction | Notes |
|---|---|---|---|
application_uuid |
id |
Read | — |
candidate_uuid |
talentId |
Write | — |
job_uuid |
jobId |
Write | — |
Placement → Assignment
| Unity Field | AviontéBOLD Field | Direction | Notes |
|---|---|---|---|
placement_uuid |
id |
Read | Avionté uses "Assignment" terminology |
Endpoint Reference
| Method | Unity Endpoint | Description | ATS Operation | Auth |
|---|---|---|---|---|
POST |
/api/unity/candidates |
Create candidate (with create-or-reuse dedup) | CreateTalent |
API Key + User UUID |
GET |
/api/unity/candidates/:uuid |
Get candidate by ID (live + cache merge) | QueryMultipleTalents |
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 |
PUT |
/api/unity/jobs/:uuid |
Update job (UpdateJob; jobId routed to spec path param) | UpdateJob |
API Key + User UUID |
POST |
/api/unity/applications |
Create application (CreateWebApplicant) | CreateWebApplicant |
API Key + User UUID |
GET |
/api/unity/applications/:uuid |
Get application | getApplication |
API Key + User UUID |
POST |
/api/unity/applications/find |
Find applications by candidate/job filter | GetTalentStagesForJob |
API Key + User UUID |
POST |
/api/unity/applications/job/latest |
Get applications for a job | GetWebApplicantsForJob |
API Key + User UUID |
POST |
/api/notes |
Create note (unified workflow) | CreateTalentActivity |
API Key + User UUID |
POST |
/api/unity/candidates/:uuid/notes |
Add candidate note (legacy) | /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/sms/send |
Send SMS (Twilio, no ATS activity log) | Twilio |
API Key + User UUID |
POST |
/api/unity/search/conversationalAISearch |
AI-powered search | Azure AI Search |
API Key + User UUID |
POST |
/api/unity/events/webhook/avionte |
Inbound Avionté webhook ingestion | AvionteEventNormalizer |
Public (tenant resolved from payload) |
GET |
/api/unity/events/log |
Query tenant event log | Event store |
API Key + User UUID |
POST |
/api/unity/events/power-automate/subscriptions/register |
Register Power Automate event destination | Event dispatch |
API Key + User UUID (admin) |
POST |
/api/unity/events/defaults/sync |
Sync default event subscriptions | Subscription provisioning |
API Key + User UUID (admin) |
GET |
/api/unity/proxy/discover/avionte |
Discover ATS operations | OpenAPI introspection |
API Key + User UUID |
POST |
/api/unity/proxy/avionte/:opId |
Execute any of 270 Avionté spec operations (no search op exists; use QueryMultipleTalents/QueryMultipleJobs batch reads) | Dynamic |
API Key + User UUID |
GET |
/api/unity/proxy/meta/avionte/:entity |
Get entity metadata | Schema introspection |
API Key + User UUID |
POST |
/api/unity/ats/search-cache/request-extension-registration |
Request extension registration OTP | OTP delivery |
Publishable/Scoped Key |
POST |
/api/unity/ats/search-cache/complete-extension-registration |
Verify OTP, issue extension key | OTP verification |
Scoped |
POST |
/api/unity/ats/search-cache/enqueue-candidates |
Enqueue candidate IDs for cache refresh | BullMQ + Azure AI Search |
Extension Publishable Key |
Events & Webhooks
Avionté inbound webhook processing is live and connector-owned.
Inbound webhooks are received at POST /api/unity/events/webhook/avionte, the tenant is
resolved from FrontOfficeTenantId via ExternalMappings, and events are normalized
to the canonical GLYDE format by AvionteEventNormalizer before entering the event queue.
Outbound delivery to Power Automate, notifications, and other destinations is configured per tenant
through the event configuration endpoints. Event-assisted cache refresh keeps the GLYDE search index
current as Avionté records change.
| Event | Trigger | Payload |
|---|---|---|
candidate.updated |
talent_updated — an Avionté talent record changes | Talent ID, changed resource fields |
application.applied |
talent_applied_for_job — a talent applies to a job | Talent ID, Job ID, application resource |
application.updated |
talent_application_modified — an application record is modified | Application ID, changed fields |
application.submitted |
talent_submitted — a talent is submitted to a job | Talent ID, Job ID |
application.stage_updated |
talent_stage_updated — an application stage changes | Stage ID, Talent ID, Job ID |
application.pipeline_talent_added |
job_pipeline_talent_added — talent added to a job pipeline | Talent ID, Job Pipeline ID |
application.pipeline_talent_updated |
job_pipeline_talent_updated — pipeline talent record changes | Talent ID, Job Pipeline ID, changed fields |
job.updated |
job_updated — an Avionté job changes | Job ID, changed resource fields |
job.created |
job_created — a new job is created | Job ID, job resource |
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 integration_data.AvionteConfiguration. Resolution order: general_activity_type, then Talent.general_activity_type (human_review uses Talent.human_review_activity_type).
AvionteConfiguration.general_activity_type: 42 -
Activity Author User IDREQUIRED
Avionté user ID used as the author for GLYDE-created activities. Resolution order: new_submission_user, then glyde_user_id, then recruiter ExternalMappings (source=avionte, type=recruiter) for the requesting GLYDE 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 -
Webhook Subscription (Optional)
To receive live Avionté events, register the GLYDE webhook URL (
{unityBaseUrl}/api/unity/events/webhook/avionte) in the Avionté webhook configuration and ensure an ExternalMapping exists for the FrontOfficeTenantId. Default subscriptions can be provisioned viaPOST /api/unity/events/defaults/sync.Webhook URL: https://api.glydeunity.com/api/unity/events/webhook/avionte -
Chrome Extension ID (Optional)
When using the GLYDE Chrome Extension for ATS cache sync, set
UNITY_AVIONTE_EXTENSION_CHROME_IDso the extension origin is allowed to complete OTP registration and enqueue candidate IDs.UNITY_AVIONTE_EXTENSION_CHROME_ID: "abcdefghijklmnopqrstuvwxyz" -
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
- No live search API for Talent or Jobs. Avionté exposes no search/filter endpoint — GLYDE serves candidate/job search from the Azure AI Search index and uses
QueryMultipleTalents/QueryMultipleJobsbatch reads for live pulls. The connector's canonicalsearchCandidates/searchJobsmethods returnNOT_IMPLEMENTEDandatsProfile.searchCapabilities.supportedisfalse. - 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. - Live job get-by-id is not implemented — job reads resolve from the GLYDE search index; only create and update write through to Avionté.
- Job notes are not supported — unified activities write talent activities only (
CreateTalentActivity). Activity retrieval from Avionté is not implemented. - SMS messages are sent via Twilio but do not create an Avionté activity note (email does).
- Job create requires Avionte
front_office__JobDtofields — map UI payload viaJobDataMapper, injectbranchId/ownerUserIdserver-side, and supply tenant Avionte ids fromAvionteConfiguration(company_id,job_status_id,job_contact_id,job_order_type_id,front_office_id,worksite_address_id) onintegration_dataand/orunity_configuration. - The Avionté OpenAPI spec uses camelCase field naming, which differs from GLYDE Unity's snake_case convention. Mapping is handled automatically.
- Entity metadata inspection may return
501from the connector for some entity types — Buddy falls back to theatsProfile.entitiescatalog with a structured "unsupported" envelope. - Pagination uses offset/limit pattern with a default limit of 25 records per page.
- The
Tenantheader is required for all API calls and is automatically injected by the connector. - Avionté deep links require the tenant
atsBaseUrl(myavionte.com subdomain) to be configured; otherwise links fall back to the GLYDE Screen /dl/ resolver. - There is no dedicated Avionté recommended-fields provider for LLM tool calls — prompts rely on
unityInspectATSOperation/unityInspectATSEntityFieldsoutput.
Version History
- Rate limiting: transient HTTP 429 responses from any Avionté call (including
GetTalentStagesForJobstage fetches) are now retried with exponential backoff in the shared connector layer, honouringRetry-Afterwhen present. All-stages-failed still triggers the BullMQ retry path.
- Product Demos: added a demo video carousel after the overview — six clips (Teams install, multi-channel, comms + ATS logging, Buddy search agent, spreadsheets + Chrome, schedule agent) hosted on the GLYDE web app and rendered from the shared template for any ATS guide.
- Capabilities: added a two-layer API explainer at the top of the section — GLYDE Unity workflow endpoints (ATS-agnostic, orchestrated, normalized) vs. Avionté proxied calls (raw spec operations via
/api/unity/proxy/avionte/:operationId, vendor-native payloads) — plus a status-badge legend defining whatfull,partial,proxy only, andnot supportedsignify (rendered from the shared template for all ATS guides).
- Overview: added contractual note — AviontéBOLD API subscription + MOU required; integration is invisible to end users (hidden APIs, no marketplace tiles); client is responsible for notifying AviontéBOLD to turn the integration off.
- Events & Webhooks: inbound webhook processing is live — 9 Avionté event types normalized by the connector-owned
AvionteEventNormalizerat/api/unity/events/webhook/avionte; outbound Power Automate trigger subscriptions documented. - Capabilities: corrected candidate operations to actual spec operations (
CreateTalent,QueryMultipleTalents,UpdateTalent); create-or-reuse dedup is 409-driven (no proactive search — Avionté has no search API); connector canonicalsearchCandidates/searchJobsnow returnNOT_IMPLEMENTEDandsearchCapabilities.supportedisfalse. - Jobs: documented that live get-by-id is not implemented (index-only reads) and fixed the job update operation id casing (
updateJob→ specUpdateJob). - Applications: documented the three-tier list-by-candidate fetch (
GetWebApplicationsForTalent→GetTalentStagesForJob→GetTalentStagesForTalentByJobId) and the job-scopedfindoperation at/api/unity/applications/find. - Messages: added SMS via Twilio (
/api/unity/sms/send) — no Avionté activity log for SMS. - Chrome Extension: documented the Avionté detector + ATS cache sync flow (OTP registration → scoped publishable key → enqueue up to 25 candidate IDs) and Avionté deep-link URL templates.
- Platform Access: added Chrome Extension platform card; enriched Teams (myavionte.com URL parsing), Copilot (entity aliasing + 501 fallbacks), and Power Automate (event trigger subscriptions) capabilities.
- Known Limitations: removed stale stub-only webhook entry; added job get-by-id, job-notes, SMS activity-log, entity-metadata 501 fallback, deep-link baseUrl, and recommended-fields provider notes.
- Applications: added job-scoped web applicant retrieval through
unityGetJobApplicationsLatest, backed byGetWebApplicantsForJobwith server-sidejobIdparameter handling.
- Jobs: create job reads tenant Avionte ids from
AvionteConfigurationsnake_case keys (company_id,job_status_id, etc.) onintegration_data/unity_configuration, mapped to JobDto camelCase beforeCreateJob.
- Jobs: create job uses
JobDataMapper+ AviontesubmitFieldMapforfront_office__JobDto; tenant Avionte ids come fromunity_configuration;branchIdandownerUserIdare injected from user context.
- Jobs: create job adaptor now calls the cleaned Avionté OpenAPI operation ID
CreateJobinstead of the non-existent lowercasecreateJob.
- Empty Tier-1 detection: Avionté returns
isn't a web applicant(contraction); phrase matching updated so production no longer warns on this expected 404.
- Applications:
getWebApplicationsForTalentHTTP 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.
- 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