Integration and API Spec
The reference during the build: every tool connection, auth scope, field mapping, and error-handling rule.
Integration and API Spec
Job Posting and Applicant Tracking
[YourCompany.com] · HR Department · Prepared by FullSpec · [Today's Date]
This document is the authoritative technical reference for every integration in the Job Posting and Applicant Tracking automation. It covers authentication methods, required OAuth scopes, webhook configuration, field mappings between tools, credential store layout, and error handling behaviour for every integration point. The FullSpec team uses this spec to build, configure, and test all connections. No external tool decisions or credential choices should be made that contradict this document.
01Tool inventory
02Per-tool integration detail
Primary ATS. Acts as the trigger source for Agent 1 (vacancy approved webhook), the applicant record store for Agent 2, and the tag-write target for Agent 3. The Greenhouse API key must be scoped to a dedicated harvest API user created for the automation.
Job posting channel. The automation posts approved job ads to LinkedIn via the LinkedIn Job Posting API. The organisation must hold a LinkedIn Company Page with posting permissions granted to the connected app.
Used by Agent 1 to route job ad drafts to the hiring manager for approval, and by Agent 2 to dispatch applicant acknowledgement emails. A dedicated sending address (e.g. hiring@[YourCompany.com]) must be authenticated via OAuth 2.0 and stored separately from personal user credentials.
Live hiring tracker. Agent 2 writes one row per new application. The sheet must be pre-structured with named columns before the first automation run. A service account with editor permissions on the target spreadsheet is the recommended auth pattern to avoid dependency on any individual user's OAuth session.
Used exclusively by Agent 3 to deliver the ranked shortlist notification to the hiring manager. A dedicated Slack app must be installed in the workspace with the hiring manager's Slack user ID or a designated hiring channel ID stored in the credential store.
03Field mappings between tools
The following tables define the exact field mappings for each agent handoff. Source and destination field names are given in monospace as they appear in the respective API payloads. All fields are mandatory unless marked optional.
Agent 1 handoff: Greenhouse vacancy record to Gmail approval email and LinkedIn job post.
Agent 2 handoff: Greenhouse application record to Google Sheets row and Gmail acknowledgement email.
Agent 3 handoff: Greenhouse scored candidate data to Slack shortlist notification.
04Build stack and orchestration
// Credential store contents (all keys) // Greenhouse GREENHOUSE_API_KEY = <harvest_api_key> GREENHOUSE_WEBHOOK_SECRET = <32-byte random hex string> GREENHOUSE_BASE_URL = https://harvest.greenhouse.io/v1 // LinkedIn LINKEDIN_CLIENT_ID = <oauth_client_id> LINKEDIN_CLIENT_SECRET = <oauth_client_secret> LINKEDIN_ACCESS_TOKEN = <current_access_token> LINKEDIN_REFRESH_TOKEN = <current_refresh_token> LINKEDIN_ORG_URN = urn:li:organization:<org_id> LINKEDIN_COMPANY_ID = <numeric_company_id> // Gmail GMAIL_CLIENT_ID = <oauth_client_id> GMAIL_CLIENT_SECRET = <oauth_client_secret> GMAIL_REFRESH_TOKEN = <oauth_refresh_token> GMAIL_SENDING_ADDRESS = hiring@[YourCompany.com] GMAIL_ACK_TEMPLATE_ID = <stored_template_key> GMAIL_APPROVAL_TEMPLATE_ID = <stored_template_key> GMAIL_PUBSUB_TOPIC = projects/<project_id>/topics/gmail-approval-inbox // Google Sheets SHEETS_SERVICE_ACCOUNT_JSON = <service_account_key_json> SHEETS_HIRING_TRACKER_ID = <spreadsheet_id> // Slack SLACK_BOT_TOKEN = xoxb-<slack_bot_token> SLACK_HIRING_MANAGER_UID = U<slack_user_id> SLACK_HIRING_CHANNEL_ID = C<slack_channel_id> SLACK_SHORTLIST_BLOCK_TEMPLATE_ID = <stored_block_kit_template_key> // Orchestration layer internals PLATFORM_INBOUND_WEBHOOK_URL = https://hooks.<platform-domain>/inbound/<workflow_id> PLATFORM_RETRY_MAX = 3 PLATFORM_RETRY_BACKOFF_MS = [1000, 5000, 30000]
05Error handling and retry logic
Every integration point has a defined failure behaviour. Unhandled exceptions must never fail silently. All errors must be written to the orchestration platform's error log with the integration name, error code, payload reference, and timestamp. Where a manual fallback is defined, the HR coordinator must be notified via email to support@gofullspec.com and the sending address within 15 minutes of the failure.
More documents for this process
Every document generated for Job Posting & Applicant Tracking.