naftiko: 1.0.0-alpha2 info: label: SmartRecruiters Candidate API — Candidates description: 'SmartRecruiters Candidate API — Candidates. 8 operations. Lead operation: List Candidates. Self-contained Naftiko capability covering one Smartrecruiters business surface.' tags: - Smartrecruiters - Candidates created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SMARTRECRUITERS_API_KEY: SMARTRECRUITERS_API_KEY capability: consumes: - type: http namespace: candidates-candidates baseUri: https://api.smartrecruiters.com description: SmartRecruiters Candidate API — Candidates business capability. Self-contained, no shared references. resources: - name: candidates path: /candidates operations: - name: listcandidates method: GET description: List Candidates outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: q in: query type: string description: Search query for candidate name or email - name: limit in: query type: integer description: Maximum number of results to return - name: offset in: query type: integer description: Number of results to skip for pagination - name: status in: query type: string description: Filter by application status - name: createcandidate method: POST description: Create Candidate outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: candidates-candidateId path: /candidates/{candidateId} operations: - name: getcandidate method: GET description: Get Candidate outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: candidateId in: path type: string description: The unique candidate identifier required: true - name: updatecandidate method: PATCH description: Update Candidate outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: candidateId in: path type: string description: The unique candidate identifier required: true - name: body in: body type: object description: Request body (JSON). required: true - name: candidates-candidateId-applications path: /candidates/{candidateId}/applications operations: - name: listcandidateapplications method: GET description: List Candidate Applications outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: candidateId in: path type: string description: The unique candidate identifier required: true - name: candidates-candidateId-documents path: /candidates/{candidateId}/documents operations: - name: listcandidatedocuments method: GET description: List Candidate Documents outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: candidateId in: path type: string description: The unique candidate identifier required: true - name: candidates-candidateId-messages path: /candidates/{candidateId}/messages operations: - name: listcandidatemessages method: GET description: List Candidate Messages outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: candidateId in: path type: string description: The unique candidate identifier required: true - name: createcandidatemessage method: POST description: Create Candidate Message outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: candidateId in: path type: string description: The unique candidate identifier required: true - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.SMARTRECRUITERS_API_KEY}}' exposes: - type: rest namespace: candidates-candidates-rest port: 8080 description: REST adapter for SmartRecruiters Candidate API — Candidates. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/candidates name: candidates description: REST surface for candidates. operations: - method: GET name: listcandidates description: List Candidates call: candidates-candidates.listcandidates with: q: rest.q limit: rest.limit offset: rest.offset status: rest.status outputParameters: - type: object mapping: $. - method: POST name: createcandidate description: Create Candidate call: candidates-candidates.createcandidate with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidates/{candidateid} name: candidates-candidateid description: REST surface for candidates-candidateId. operations: - method: GET name: getcandidate description: Get Candidate call: candidates-candidates.getcandidate with: candidateId: rest.candidateId outputParameters: - type: object mapping: $. - method: PATCH name: updatecandidate description: Update Candidate call: candidates-candidates.updatecandidate with: candidateId: rest.candidateId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/candidates/{candidateid}/applications name: candidates-candidateid-applications description: REST surface for candidates-candidateId-applications. operations: - method: GET name: listcandidateapplications description: List Candidate Applications call: candidates-candidates.listcandidateapplications with: candidateId: rest.candidateId outputParameters: - type: object mapping: $. - path: /v1/candidates/{candidateid}/documents name: candidates-candidateid-documents description: REST surface for candidates-candidateId-documents. operations: - method: GET name: listcandidatedocuments description: List Candidate Documents call: candidates-candidates.listcandidatedocuments with: candidateId: rest.candidateId outputParameters: - type: object mapping: $. - path: /v1/candidates/{candidateid}/messages name: candidates-candidateid-messages description: REST surface for candidates-candidateId-messages. operations: - method: GET name: listcandidatemessages description: List Candidate Messages call: candidates-candidates.listcandidatemessages with: candidateId: rest.candidateId outputParameters: - type: object mapping: $. - method: POST name: createcandidatemessage description: Create Candidate Message call: candidates-candidates.createcandidatemessage with: candidateId: rest.candidateId body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: candidates-candidates-mcp port: 9090 transport: http description: MCP adapter for SmartRecruiters Candidate API — Candidates. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-candidates description: List Candidates hints: readOnly: true destructive: false idempotent: true call: candidates-candidates.listcandidates with: q: tools.q limit: tools.limit offset: tools.offset status: tools.status outputParameters: - type: object mapping: $. - name: create-candidate description: Create Candidate hints: readOnly: false destructive: false idempotent: false call: candidates-candidates.createcandidate with: body: tools.body outputParameters: - type: object mapping: $. - name: get-candidate description: Get Candidate hints: readOnly: true destructive: false idempotent: true call: candidates-candidates.getcandidate with: candidateId: tools.candidateId outputParameters: - type: object mapping: $. - name: update-candidate description: Update Candidate hints: readOnly: false destructive: false idempotent: true call: candidates-candidates.updatecandidate with: candidateId: tools.candidateId body: tools.body outputParameters: - type: object mapping: $. - name: list-candidate-applications description: List Candidate Applications hints: readOnly: true destructive: false idempotent: true call: candidates-candidates.listcandidateapplications with: candidateId: tools.candidateId outputParameters: - type: object mapping: $. - name: list-candidate-documents description: List Candidate Documents hints: readOnly: true destructive: false idempotent: true call: candidates-candidates.listcandidatedocuments with: candidateId: tools.candidateId outputParameters: - type: object mapping: $. - name: list-candidate-messages description: List Candidate Messages hints: readOnly: true destructive: false idempotent: true call: candidates-candidates.listcandidatemessages with: candidateId: tools.candidateId outputParameters: - type: object mapping: $. - name: create-candidate-message description: Create Candidate Message hints: readOnly: false destructive: false idempotent: false call: candidates-candidates.createcandidatemessage with: candidateId: tools.candidateId body: tools.body outputParameters: - type: object mapping: $.