OCC: Job Search icon

OCC: Job Search (OCCMundial) data API

OCCMundial.com · Identity

OCC: Job Search is OCCMundial's Android client for the occ.com.mx job board. Vacancy cards come from GET /v1/jobs/search; the signed-in jobseeker record lives at GET /v1/me/profile. Apply (POST /v1/jobs/{jobId}/apply), CV file upload (POST /v1/me/resume/file), recruiter views (GET /v1/me/profile-views) and in-app recruiter chat (GET /v1/me/conversations) sit on the same JSON API, authenticated with a Bearer token from POST /oauth/token.

OCC: Job Search (package mx.com.occ, versionName 6.25.0) is OCCMundial's Android client for Mexico's occ.com.mx job board: candidates search vacancies, open a posting, apply (including killer questions and skills), upload a CV, watch recruiter views, save favorites and talk to recruiters in-app. Behind those screens the app talks to a token-authenticated JSON data API: signed-in calls attach a Bearer access token from an OpenID Connect sign-in (authorization-code + PKCE). Vacancy cards use wire names such as jobOfferId, jobTitle, companyPrettyName, companyLogoUrl, salaryMin, salaryMax, salaryNegotiable, locationName, hasKillerQuestions, isFavorite and isApplied. The surface below covers token login, job search, job details, related vacancies, the candidate profile, CV download/upload, apply, applied-jobs history, favorites, recruiter views, job alerts, job suggestions and recruiter chat.

Screenshots

  • OCC: Job Search screenshot 1
  • OCC: Job Search screenshot 2
  • OCC: Job Search screenshot 3
  • OCC: Job Search screenshot 4
  • OCC: Job Search screenshot 5
  • OCC: Job Search screenshot 6
  • OCC: Job Search screenshot 7
  • OCC: Job Search screenshot 8

API surface

  • OAuth2 token (candidate login)

    POST /oauth/token osint

    Exchanges an OCCMundial authorization code (or refresh_token) for the Bearer accessToken that the candidate sign-in and every later /v1 call attach.

    Auth: Unauthenticated. Authorization-code + PKCE exchange. Later REST calls send Authorization: Bearer <accessToken>. Refresh uses grant_type=refresh_token on the same endpoint.

    • grant_type
    • code
    • redirect_uri
    • clientId
    • code_verifier
    • access_token
    • refresh_token
    • id_token
    • token_type
    • expires_in
    • scope
    • sub

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /oauth/token HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=authorization_code&code=<auth-code>&redirect_uri=<app-redirect-uri>&client_id=<portal-client-id>&code_verifier=<pkce-verifier>
    {
      "access_token": "<accessToken>",
      "refresh_token": "<refreshToken>",
      "id_token": "<idToken>",
      "token_type": "Bearer",
      "expires_in": 3600,
      "scope": "openid profile email"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's sign-in and session-refresh flow
    • field set mirrors a standard OpenID Connect token response
  • Search job offers

    GET /v1/jobs/search opendata

    Returns the vacancy listing used by the empleos search-results screen: jobTitle, companyPrettyName, salaryMin/salaryMax, locationName, facets and pagination.

    Auth: Optional Bearer accessToken from POST /oauth/token. Anonymous search still sends a portal identifier; signed-in calls personalise isFavorite / isApplied.

    • jobOffers
    • jobOfferId
    • encryptedId
    • jobTitle
    • companyName
    • companyPrettyName
    • companyLogoUrl
    • companySector
    • companyRating
    • isCompanyVerified
    • isCompanyConfidential
    • salaryMin
    • salaryMax
    • salaryNegotiable
    • salaryInterval
    • isSalaryVisible
    • locationId
    • locationName
    • publicationDate
    • jobModality
    • hasKillerQuestions
    • isFavorite
    • isApplied
    • affinityScore
    • facets
    • selectedFacets
    • pageNumber
    • total
    • hasMore

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/jobs/search?keywords=ingeniero+software&locationIds=9&cityIds=555&categoryIds=12&salaryMin=20000&salaryMax=45000&pageNumber=1&pageSize=20&sortBy=publicationDate HTTP/1.1
    Authorization: Bearer <accessToken>
    Accept: application/json
    {
      "jobOffers": [{
        "jobOfferId": "18442091",
        "encryptedId": "enc-off-18442091",
        "jobTitle": "Ingeniero de software",
        "companyName": "Example Corp",
        "companyPrettyName": "Example Corp SA de CV",
        "companyLogoUrl": "https://cdn.example.com/logos/example.png",
        "companySector": "Tecnología",
        "companyRating": 4.2,
        "isCompanyVerified": true,
        "isCompanyConfidential": false,
        "salaryMin": 25000,
        "salaryMax": 38000,
        "salaryNegotiable": false,
        "salaryInterval": "monthly",
        "isSalaryVisible": true,
        "locationId": 9,
        "locationName": "Ciudad de México",
        "publicationDate": "2026-09-20T15:04:00Z",
        "jobModality": "hybrid",
        "hasKillerQuestions": true,
        "isFavorite": false,
        "isApplied": false,
        "affinityScore": 0.81,
        "jobFirstToApply": true
      }],
      "total": 1284,
      "pageNumber": 1,
      "hasMore": true,
      "facets": [{"facetId": "salary", "facetType": "salary", "count": 412}],
      "selectedFacets": []
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's vacancy search-results flow
    • field set mirrors the listing cards shown for a keyword and location search
  • Fetch job offer by id

    GET /v1/jobs/{jobId} opendata

    Hydrates a single OCCMundial posting (description, requirements, jobBenefits, salary band, company verification) for the job-detail screen.

    Auth: Optional Bearer accessToken. Personalised blocks (isApplied, isFavorite, affinityScore) require a signed-in candidate.

    • jobOffer
    • jobOfferId
    • encryptedId
    • jobTitle
    • description
    • requirements
    • jobBenefits
    • companyId
    • companyPrettyName
    • companyLogoUrl
    • companySector
    • companyRating
    • isCompanyVerified
    • isCompanyConfidential
    • salaryMin
    • salaryMax
    • workplaceType
    • contractTypeId
    • publicationDate
    • hasKillerQuestions
    • hasSkills
    • isExternal
    • isFavorite
    • isApplied

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/jobs/18442091 HTTP/1.1
    Authorization: Bearer <accessToken>
    Accept: application/json
    {
      "jobOffer": {
        "jobOfferId": "18442091",
        "encryptedId": "enc-off-18442091",
        "jobTitle": "Ingeniero de software",
        "description": "Construye servicios de marketplace en CDMX.",
        "requirements": "3+ años en Kotlin o Java.",
        "jobBenefits": ["SGMM", "home office 2 días"],
        "companyId": "co-441",
        "companyPrettyName": "Example Corp SA de CV",
        "companyLogoUrl": "https://cdn.example.com/logos/example.png",
        "companySector": "Tecnología",
        "companyRating": 4.2,
        "isCompanyVerified": true,
        "isCompanyConfidential": false,
        "salaryMin": 25000,
        "salaryMax": 38000,
        "salaryNegotiable": false,
        "locationName": "Ciudad de México",
        "workplaceType": "hybrid",
        "contractTypeId": 1,
        "publicationDate": "2026-09-20T15:04:00Z",
        "hasKillerQuestions": true,
        "hasSkills": true,
        "isExternal": false,
        "isFavorite": false,
        "isApplied": false
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's job-detail screen flow
    • field set mirrors the full posting card plus description and requirements blocks
  • Related job offers

    GET /v1/jobs/{jobId}/related opendata

    Returns related vacancies for the job-detail carousel, scored with affinityScore.

    Auth: Optional Bearer accessToken. Offers the candidate has hidden are filtered out before display.

    • relatedJobOffers
    • jobOfferId
    • jobTitle
    • companyPrettyName
    • companyLogoUrl
    • locationName
    • salaryMin
    • salaryMax
    • affinityScore
    • isSimilarJob
    • isFavorite
    • jobOffersAffinityScoreList

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/jobs/18442091/related HTTP/1.1
    Authorization: Bearer <accessToken>
    Accept: application/json
    {
      "relatedJobOffers": [{
        "jobOfferId": "18443002",
        "jobTitle": "Desarrollador backend",
        "companyPrettyName": "Example Labs",
        "companyLogoUrl": "https://cdn.example.com/logos/labs.png",
        "locationName": "Guadalajara",
        "salaryMin": 22000,
        "salaryMax": 32000,
        "affinityScore": 0.74,
        "isSimilarJob": true,
        "isFavorite": false
      }],
      "jobOffersAffinityScoreList": [0.74]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the job-detail related-vacancies carousel
    • affinity scoring mirrors the ranking shown alongside an open posting
  • Get signed-in candidate

    GET /v1/me/profile osint

    Loads the signed-in jobseeker record (name, email, phoneNumber, encryptedCurriculumId, resumeVisibility, feature flags) that gates the apply and chat screens.

    Auth: Bearer accessToken from POST /oauth/token. An expired session triggers a token refresh and then sign-out if the refresh fails.

    • candidate
    • candidateId
    • encryptedCandidateId
    • firstName
    • middleName
    • lastName
    • email
    • phoneNumber
    • gender
    • birthDate
    • candidateStatusId
    • curriculumId
    • encryptedCurriculumId
    • resumeVisibility
    • features
    • isVerified

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/me/profile HTTP/1.1
    Authorization: Bearer <accessToken>
    Accept: application/json
    {
      "candidate": {
        "candidateId": 8845123,
        "encryptedCandidateId": "enc-cand-8845123",
        "firstName": "María",
        "middleName": "Elena",
        "lastName": "Hernández",
        "email": "[email protected]",
        "phoneNumber": "5512345678",
        "gender": "F",
        "birthDate": "1994-03-12",
        "candidateStatusId": 1,
        "curriculumId": 44189012,
        "encryptedCurriculumId": "enc-cv-44189012",
        "resumeVisibility": "public",
        "features": ["chatEnabled", "chargedApply"],
        "isVerified": true
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's signed-in profile bootstrap
    • field set mirrors the candidate record shown across the dashboard tabs
  • Get candidate CV / resume

    GET /v1/me/resume osint

    Returns the structured OCCMundial CV (skills, jobExperiences, education, certification, language, visibility) that the curriculo screens display and edit.

    Auth: Bearer accessToken from POST /oauth/token. Requires an active curriculumId on the candidate.

    • resume
    • resumeId
    • curriculumId
    • encryptedCurriculumId
    • visibility
    • isFirstJob
    • jobTitle
    • skills
    • encryptedSkillId
    • levelId
    • jobExperiences
    • company
    • position
    • startDate
    • endDate
    • isCurrent
    • education
    • institution
    • certification
    • encryptedCertificationId
    • language
    • languageId
    • languageLevel

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/me/resume HTTP/1.1
    Authorization: Bearer <accessToken>
    Accept: application/json
    {
      "resume": {
        "resumeId": 44189012,
        "curriculumId": 44189012,
        "encryptedCurriculumId": "enc-cv-44189012",
        "visibility": "public",
        "isFirstJob": false,
        "jobTitle": "Ingeniera de software",
        "skills": [{"encryptedSkillId": "enc-sk-91", "skill": "Kotlin", "levelId": 3}],
        "jobExperiences": [{
          "company": "Example Corp",
          "position": "Ingeniera de software",
          "startDate": "2021-03-01",
          "endDate": null,
          "isCurrent": true,
          "expIsFirstJob": false
        }],
        "education": [{"institution": "UNAM", "year": 2017}],
        "certification": [{"encryptedCertificationId": "enc-cert-7", "institution": "Google", "year": 2024}],
        "language": [{"languageId": 1, "languageLevel": "C1"}]
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's curriculum edit screens
    • section set mirrors the skills, experience, education and language blocks shown to the jobseeker
  • Upload CV file

    POST /v1/me/resume/file osint

    Uploads the candidate's attached CV file (PDF/DOC) and returns encryptedFileId / fileUri used to download, attach or set the default CV.

    Auth: Bearer accessToken from POST /oauth/token. Multipart upload of the attached CV file.

    • encryptedFileId
    • fileName
    • mimeType
    • fileSize
    • fileUri
    • curriculumId
    • encryptedCurriculumId

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/me/resume/file HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: multipart/form-data; boundary=----occ
    
    ------occ
    Content-Disposition: form-data; name="file"; filename="cv-maria.pdf"
    Content-Type: application/pdf
    
    <pdf-bytes>
    ------occ--
    {
      "encryptedFileId": "enc-file-9081",
      "fileName": "cv-maria.pdf",
      "mimeType": "application/pdf",
      "fileSize": 184320,
      "fileUri": "https://files.example.com/v1/me/resume/file/enc-file-9081",
      "curriculumId": 44189012,
      "encryptedCurriculumId": "enc-cv-44189012"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's attach-CV upload flow
    • multipart shape mirrors the file picker shown on the curriculum screen
  • Apply to a job offer

    POST /v1/jobs/{jobId}/apply opendata

    Submits a postulación to a vacancy with killerQuestionAnswers and skillAnswers; returns applicationId / applicationStatusId for the postulaciones list.

    Auth: Bearer accessToken from POST /oauth/token. Candidate must have a complete CV; killerQuestionAnswers and skillAnswers are required when hasKillerQuestions / hasSkills is true.

    • encryptedCandidateId
    • jobOfferId
    • encryptedCurriculumId
    • killerQuestionAnswers
    • skillAnswers
    • applicationId
    • jobApplicationId
    • applicationDate
    • applicationStatusId
    • isApplied
    • chargedApply

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/jobs/18442091/apply HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "encryptedCandidateId": "enc-cand-8845123",
      "encryptedCurriculumId": "enc-cv-44189012",
      "killerQuestionAnswers": [{"questionId": 11, "answerText": "Sí"}],
      "skillAnswers": [{"encryptedSkillId": "enc-sk-91", "levelId": 3}]
    }
    {
      "applicationId": "app-55201",
      "jobApplicationId": "app-55201",
      "jobOfferId": "18442091",
      "applicationDate": "2026-09-27T14:22:00Z",
      "applicationStatusId": 1,
      "isApplied": true,
      "chargedApply": false
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's apply flow including killer-question and skill prompts
    • response shape mirrors the confirmation shown after a successful postulación
  • List applied job offers

    GET /v1/me/applications opendata

    Lists the vacancies the candidate already applied to for the postulaciones tab.

    Auth: Bearer accessToken from POST /oauth/token.

    • jobOffers
    • jobOfferId
    • jobTitle
    • companyPrettyName
    • companyLogoUrl
    • applicationId
    • applicationDate
    • applicationStatusId
    • isApplied
    • locationName
    • total

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/me/applications HTTP/1.1
    Authorization: Bearer <accessToken>
    Accept: application/json
    {
      "jobOffers": [{
        "jobOfferId": "18442091",
        "jobTitle": "Ingeniero de software",
        "companyPrettyName": "Example Corp SA de CV",
        "companyLogoUrl": "https://cdn.example.com/logos/example.png",
        "applicationId": "app-55201",
        "applicationDate": "2026-09-27T14:22:00Z",
        "applicationStatusId": 1,
        "isApplied": true,
        "locationName": "Ciudad de México"
      }],
      "total": 6
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's postulaciones history tab
    • field set mirrors the applied-job cards and their status labels
  • List favorite job offers

    GET /v1/me/favorites opendata

    Reads saved vacancies keyed by encryptedFavoritesIds for the favorites screen.

    Auth: Bearer accessToken from POST /oauth/token. Query encryptedFavoritesIds or typeId; the same resource is written when a favorite is toggled.

    • favoriteJobOffers
    • encryptedFavoritesIds
    • typeId
    • jobOfferId
    • encryptedId
    • jobTitle
    • companyPrettyName
    • locationName
    • salaryMin
    • salaryMax
    • isFavorite

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/me/favorites?typeId=1 HTTP/1.1
    Authorization: Bearer <accessToken>
    Accept: application/json
    {
      "favoriteJobOffers": [{
        "jobOfferId": "18442091",
        "encryptedId": "enc-off-18442091",
        "jobTitle": "Ingeniero de software",
        "companyPrettyName": "Example Corp SA de CV",
        "locationName": "Ciudad de México",
        "salaryMin": 25000,
        "salaryMax": 38000,
        "isFavorite": true
      }],
      "encryptedFavoritesIds": ["enc-off-18442091"]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's favorites screen and favorite-toggle interaction
    • field set mirrors the saved-vacancy cards
  • Recruiter profile views

    GET /v1/me/profile-views osint

    Returns which recruiters looked at the candidate plus totalRecruiterViews / totalCompanies for the resume-visits dashboard.

    Auth: Bearer accessToken from POST /oauth/token.

    • recruiterViews
    • companyId
    • companyPrettyName
    • companyLogoUrl
    • recruiterViewsCount
    • createdAt
    • totalRecruiterViews
    • totalCompanyViews
    • totalCompanies

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/me/profile-views HTTP/1.1
    Authorization: Bearer <accessToken>
    Accept: application/json
    {
      "recruiterViews": [{
        "companyId": "co-441",
        "companyPrettyName": "Example Corp SA de CV",
        "companyLogoUrl": "https://cdn.example.com/logos/example.png",
        "recruiterViewsCount": 3,
        "createdAt": "2026-09-26T11:00:00Z"
      }],
      "totalRecruiterViews": 17,
      "totalCompanyViews": 9,
      "totalCompanies": 9
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's resume-visits dashboard
    • totals mirror the recruiter-interest counters shown to the jobseeker
  • Job alert list

    GET /v1/me/alerts opendata

    Lists saved empleo alerts that push matching vacancies to the candidate.

    Auth: Bearer accessToken from POST /oauth/token.

    • alertId
    • keywords
    • locationIds
    • locationName
    • salaryMin
    • criteria
    • frequency
    • isActive
    • receiveAlerts

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/me/alerts HTTP/1.1
    Authorization: Bearer <accessToken>
    Accept: application/json
    {
      "alerts": [{
        "alertId": "al-2201",
        "keywords": "ingeniero software",
        "locationIds": [9],
        "locationName": "Ciudad de México",
        "salaryMin": 20000,
        "criteria": {"categoryIds": [12], "jobModality": "hybrid"},
        "frequency": "daily",
        "isActive": true,
        "receiveAlerts": true
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's saved-alert management screen
    • criteria shape mirrors the keyword, location and frequency options shown per alert
  • Suggested jobs

    GET /v1/me/suggested-jobs opendata

    Returns personalised vacancy suggestions for the dashboard suggestions screen.

    Auth: Bearer accessToken from POST /oauth/token. Requires an active curriculumId.

    • suggestedJobOffers
    • jobOfferId
    • jobTitle
    • companyPrettyName
    • locationName
    • salaryMin
    • salaryMax
    • affinityScore
    • isFavorite

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/me/suggested-jobs HTTP/1.1
    Authorization: Bearer <accessToken>
    Accept: application/json
    {
      "suggestedJobOffers": [{
        "jobOfferId": "18445110",
        "jobTitle": "Desarrolladora Android",
        "companyPrettyName": "Example Mobile",
        "locationName": "Monterrey",
        "salaryMin": 28000,
        "salaryMax": 40000,
        "affinityScore": 0.88,
        "isFavorite": false
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's dashboard suggestions screen
    • ranking mirrors the affinity-scored recommendation cards
  • Recruiter chat conversations

    GET /v1/me/conversations osint

    Lists recruiter–candidate conversations with unreadMessagesCount for the in-app chat inbox.

    Auth: Bearer accessToken from POST /oauth/token. Feature gated by the chatEnabled flag on the candidate profile.

    • conversationId
    • encryptedIdConversation
    • companyPrettyName
    • jobOfferId
    • jobTitle
    • unreadMessagesCount
    • lastMessage
    • messageCreationDate
    • senderId
    • totalMessagesCount

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/me/conversations HTTP/1.1
    Authorization: Bearer <accessToken>
    Accept: application/json
    {
      "conversations": [{
        "conversationId": "conv-901",
        "encryptedIdConversation": "enc-conv-901",
        "companyPrettyName": "Example Corp SA de CV",
        "jobOfferId": "18442091",
        "jobTitle": "Ingeniero de software",
        "unreadMessagesCount": 2,
        "lastMessage": "¿Puedes entrevistarte el jueves?",
        "messageCreationDate": "2026-09-27T09:15:00Z",
        "senderId": "rec-44"
      }],
      "totalMessagesCount": 2
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's recruiter chat inbox
    • field set mirrors the conversation rows and unread badges

Data categories

  • vacancies
  • candidate profiles
  • CVs and resumes
  • job applications
  • recruiter views
  • job alerts
  • recruiter chat

Where teams use this data

  • Mexico vacancy feed into an ATS

    Poll GET /v1/jobs/search (keywords, locationIds, salaryMin/salaryMax, selectedFacets) and hydrate each hit with GET /v1/jobs/{jobId} so an applicant-tracking system can mirror OCCMundial postings with jobTitle, companyPrettyName, salary band and hasKillerQuestions.

  • Candidate CV completeness for apply-readiness

    Read GET /v1/me/profile plus GET /v1/me/resume (skills, jobExperiences, education, visibility) and POST new files to /v1/me/resume/file so a career-coach product can tell a jobseeker why a job application would be blocked.

  • Application pipeline and recruiter interest

    Join GET /v1/me/applications (applicationId, applicationStatusId, applicationDate) with GET /v1/me/profile-views (totalRecruiterViews, totalCompanies) to show which postulaciones are actually being looked at.

  • Alert-driven vacancy notifications

    Sync GET /v1/me/alerts (keywords, locationIds, frequency, isActive) and GET /v1/me/suggested-jobs (affinityScore) so a workforce product can fan the same saved-search criteria out as push or email without re-implementing OCCMundial's matching.

Frequently asked questions

Which OCCMundial endpoints power job search?

The empleos results screen calls GET /v1/jobs/search (keywords, locationIds, salaryMin/salaryMax, facets). Opening a card hydrates GET /v1/jobs/{jobId}; the related carousel is GET /v1/jobs/{jobId}/related.

How does OCC: Job Search authenticate?

Candidates sign in with OpenID Connect (authorization-code + PKCE). The app posts grant_type=authorization_code to POST /oauth/token and sends Authorization: Bearer <accessToken> on later /v1 calls. Refresh uses grant_type=refresh_token.

What candidate and CV fields are returned?

GET /v1/me/profile returns encryptedCandidateId, firstName, lastName, email, phoneNumber and encryptedCurriculumId. GET /v1/me/resume adds skills, jobExperiences, education, certification, language and resume visibility; file uploads go to POST /v1/me/resume/file.

Where do applications and recruiter views live?

Apply is POST /v1/jobs/{jobId}/apply with killerQuestionAnswers. History is GET /v1/me/applications. Recruiter interest is GET /v1/me/profile-views (totalRecruiterViews, totalCompanies).

Topics

  • OCCMundial API
  • OCC job search API
  • occ.com.mx vacancies
  • candidate CV API
  • recruiter views
  • job alerts Mexico
  • OCC apply endpoint
  • OpenID Connect OCC

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

Get a quote