Skip to content

Matching endpoints

API version

Main API: 4.50.36

src/matching owns three products: Job Offer Matching (JOM), Job Proximity Matching (JPM) and Training Matching. Current /api/v1 operations require the standard API key. Historical /jom/admin and /jpm/admin operations preserve their existing unauthenticated environment contract.

JPM rationale

POST /api/v1/jpm/rationale

Returns a compact, localized explanation of a job's relevance using JPM user skills and current/target job evidence. The JSON body requires client_id, user_id, job_id and locale; data_source defaults to smartmobility. The response is {"rationale": "..."}, capped at 300 characters. See JPM rationale for examples and errors.

Matching operations

GET /api/v1/user/process

Loads one user and runs the selected products. jom=true and jpm=true by default; selected calculations execute concurrently and are returned under their product keys. At least one flag must be true. Each product independently builds candidates, calculates scores and applies its configured persistence and publishing behavior.

GET /api/v1/opportunity/process

Loads one opportunity and calculates JOM scores against eligible users. Missing entities and unknown tenant databases are returned as public errors by the processing boundary.

GET /api/v1/job/process

Loads one job and calculates JPM scores against eligible users. The service selects MongoDB documents or PostgreSQL projections, then persists results in the active score repository.

POST /api/v1/feedback/process

Processes a JOM feedback event through the same feedback flow as the consumer. It normalizes the event, updates the corresponding user preference signal and persists the operational effect. call_from_consumer=true archives the raw feedback in Datalake before processing. The JSON body and client/data-source query parameters are unchanged; this operation remains MongoDB-only.

JOM scores

POST /api/v1/jom/user/scores

Reads persisted current-model scores for a user, with ordering and a default limit of 100. recompute_scores=true runs the complete user-to-opportunities pipeline first; save_scores and send_scores control persistence and outbound publication for that calculation.

POST /jom/admin/get_one_user_scores

Preserves the historical JOM user-score contract and delegates to the same backend-aware score service. Its default is read-only: recomputation, saving and publishing are all disabled.

POST /api/v1/jom/opportunity/scores

Returns user scores for one opportunity. By default it recomputes, saves and publishes the opportunity-side results; callers can disable each behavior and control result order/limit.

POST /jom/admin/get_one_offer_scores

Historical alias of the opportunity score workflow using offer_id. It keeps the legacy defaults, which also recompute, persist and publish unless explicitly disabled.

GET /jom/health-check

Returns the JOM router health payload. It does not validate downstream database or model availability.

Talent Match Insight

POST /api/v1/jom/rationale

Loads a user, opportunity and their persisted JOM score, builds a constrained evidence payload and asks the configured LLM for a two-sentence localized rationale. insight_type=skills or motivation narrows the evidence; omission uses both. See Talent Match Insight for the complete pipeline and failure behavior.

POST /jom/admin/talent_match_insights_by_id

Preserves the historical query-parameter contract but invokes the same insight service and output rules.

JPM scores

POST /api/v1/jpm/user/scores

Returns persisted job-proximity scores for a user. Optional recomputation runs hard filters, skill and job-text scoring; saving and publishing remain disabled by default.

POST /jpm/admin/get_one_user_scores

Historical contract for the same backend-aware user JPM score service. It keeps the legacy environment resolution and optional unbounded limit.

Galaxy

POST /api/v1/jpm/galaxy/path

Uses a JSON body with tenant, user and target-job IDs to generate a validated career path from stored JPM results. Returns authoritative job metadata, transitions, an explanation and an explicit reason when no path is returned.

POST /api/v1/jpm/galaxy/rationale

Accepts the same context and an ordered path_job_ids list. Explains the supplied path's training needs and skills to develop in the employee's locale, in at most 20 words. See Galaxy for contracts, examples, rules and configuration.

Training Matching

POST /api/v1/get_training_matching

Resolves a natural-language request plus optional user context into a hybrid training search. Full-text and vector rankings are fused with weighted RRF, hard filters and exclusions are applied in the active backend, and the requested number of results is returned directly in RRF order. See Training Matching.

GET /api/v1/get_training_matching_rationale

Loads one user and training and generates a rationale in the validated BCP 47 locale. Optional search_query (at most 4,000 characters) requests a search-based explanation in 1–2 sentences. An omitted, empty or whitespace-only query preserves the profile-based 80–120-character prompt. It explains an existing pair and does not alter search order or stored scores. See rationale modes.

POST /api/v1/development-objectives/suggestions

Builds personalized development objectives from the authenticated user's profile, skill gaps and relevant context. Strict structured model output is validated and adapted to the public response; invalid or incomplete generated records fail rather than being silently invented.

Statistics and exports

The matching and skill-score exports below support MongoDB and PostgreSQL. The legacy/current JPM comparison is available only in MongoDB mode.

In PostgreSQL mode, matching exports download stored scores as XLSX, with identifier selection, ordering and per-entity limits. They do not apply recomputation, source enrichment, Talent Match Insight generation, email or SFTP delivery options. The skill_scores exports return the stored score for the requested pair, rather than the detailed skill-pair calculation available in MongoDB mode. The additional capabilities described below apply to MongoDB.

POST /api/v1/jom/stats/matchings/users

Generates a user-side JOM workbook for an uploaded selection or tenant scope. It can recompute scores, add source information, include Talent Match Insight, sort/limit results and send the artifact by email or SFTP.

POST /api/v1/jom/stats/matchings/opportunities

Generates the opportunity-side JOM workbook, optionally resolving uploaded opportunity codes, recomputing scores and enriching the export before email delivery.

POST /api/v1/jom/stats/skill_scores

Produces the detailed skill-pair calculation for one user/opportunity pair, including selected semantic matches, levels, weights and the resulting skill score.

POST /api/v1/jpm/stats/matchings

Exports JPM results for selected or discovered users, with optional recomputation, source enrichment, ordering, email and SFTP delivery.

POST /api/v1/jpm/stats/compare_v1_v2_matchings

Builds a comparison workbook between legacy and current JPM scores for the selected users. It is a reporting operation and does not migrate stored scores. PostgreSQL requests return HTTP 400 because this comparison requires MongoDB.

POST /api/v1/jpm/stats/skill_scores

Produces the detailed shared skill-score calculation for one user/job pair, making the semantic match, level ratio and configured type weights inspectable.

Administrator batch and publication routes are catalogued under Administration.

The generated main HTTP reference is the authoritative source for parameters, schemas, responses and examples.