generated: '2026-07-20' method: derived source: openapi/nobueno-openapi-original.json notes: Entity-relationship graph derived from Swagger 2.0 definitions. NoBueno / Jungle API is a job-and-candidate matching platform. entity_count: 107 relationship_count: 64 key_entities: - name: Job description: A job posting owned by a company/recruiter, matched against candidates. - name: Candidate/User description: A job-seeker profile with work experience, skills and roles. - name: Match description: A scored match between a job and a candidate. - name: Company/Employer description: A hiring company with media and job postings. - name: Message/Messenger description: Conversation thread between a recruiter and a candidate. - name: Skill / Role / Discipline description: Taxonomy entities describing jobs and candidates. relationships: - from: AdminReturnJobRetrieve kind: has_one to: ReturnJobRole via: title - from: AdminReturnJobRetrieve kind: has_one to: CountryName via: country - from: AdminReturnJobRetrieve kind: has_one to: CityName via: city - from: AdminReturnJobRetrieve kind: has_many to: Skill via: technical_skills - from: AdminReturnJobRetrieve kind: has_many to: Skill via: soft_skills - from: AdminReturnJobRetrieve kind: has_many to: Language via: languages - from: AdminEmployer kind: has_one to: CountryName via: country - from: AdminEmployer kind: has_one to: CityName via: city - from: AdminEmployer kind: has_one to: ReturnCredit via: credit - from: AdminEmployer kind: has_many to: ReturnReview via: reviews_from - from: AdminEmployer kind: has_many to: ReturnReview via: reviews_to - from: AdminCreditRequest kind: has_one to: AdminEmployer via: user - from: ReturnAdminJobRole kind: has_one to: ReturnAdminJobRoleCategory via: category - from: AdminJob kind: has_one to: ReturnJobRole via: title - from: AdminJob kind: has_one to: ReturnBaseUser via: created_by - from: AdminJob kind: has_one to: ReturnCompanyJob via: company - from: AdminJob kind: has_one to: CityName via: city - from: AdminJob kind: has_one to: CountryName via: country - from: ReturnStepMatchRate kind: has_one to: Currency via: salary_currency - from: ReturnJobRetrieve kind: has_one to: ReturnJobRole via: title - from: ReturnJobRetrieve kind: has_one to: CountryName via: country - from: ReturnJobRetrieve kind: has_one to: CityName via: city - from: ReturnJobRetrieve kind: has_many to: Skill via: technical_skills - from: ReturnJobRetrieve kind: has_many to: Skill via: soft_skills - from: ReturnJobRetrieve kind: has_many to: Language via: languages - from: ReturnJobRetrieve kind: has_one to: ReturnStepMatchRate via: matches - from: AdminUserReport kind: has_one to: ReturnUser via: user - from: AdminUserReport kind: has_one to: ReturnUser via: reported_user - from: AdminUser kind: has_one to: CountryName via: country - from: AdminUser kind: has_one to: CityName via: city - from: AdminUser kind: has_many to: ReturnReview via: reviews_from - from: AdminUser kind: has_many to: ReturnReview via: reviews_to - from: ReturnUserEmployment kind: has_one to: ReturnCompany via: company - from: ReturnUserEmployment kind: has_one to: ReturnUser via: user - from: ReturnUserMe kind: has_one to: CityName via: city - from: ReturnUserMe kind: has_one to: CountryName via: country - from: AdminUserEmployment kind: has_one to: ReturnCompany via: company - from: AdminUserEmployment kind: has_one to: ReturnUserMe via: user - from: MobileStepMatchRate kind: has_one to: Salary via: freelance_salary - from: MobileStepMatchRate kind: has_one to: Salary via: part_time_salary - from: MobileStepMatchRate kind: has_one to: Salary via: full_time_salary - from: MobileStepMatchRate kind: has_one to: Salary via: internship_salary - from: ReturnMessenger kind: has_one to: ReturnUserBaseChat via: candidate - from: ReturnMessenger kind: has_one to: ReturnUserBaseChatEmployer via: employer - from: ReturnMessenger kind: has_one to: ReturnJobBase via: job - from: ReturnJob kind: has_one to: ReturnJobRole via: title - from: ReturnJob kind: has_one to: CountryName via: country - from: ReturnJob kind: has_one to: CityName via: city - from: Job kind: has_one to: StepMatchRate via: matches - from: Job kind: has_one to: StepCompensation via: compensation - from: CandidatesForJob kind: has_one to: CountryName via: country - from: CandidatesForJob kind: has_one to: CityName via: city - from: CandidatesForJob kind: has_many to: Skill via: matched_technical_skills - from: ReturnChat kind: has_many to: Attachment via: attachments - from: ReturnJobPublicList kind: has_one to: CountryName via: country - from: ReturnJobPublicList kind: has_one to: CityName via: city - from: ReturnJobPublicList kind: has_many to: ReturnSkill via: technical_skills - from: ReturnJobPublicList kind: has_many to: ReturnSkill via: soft_skills - from: ReturnJobPublicList kind: has_many to: Language via: languages - from: ReturnJobPublicList kind: has_one to: ReturnMatch via: matches - from: ReturnJobForCandidate kind: has_one to: ReturnJobRole via: title - from: ReturnJobForCandidate kind: has_one to: CityName via: city - from: ReturnJobForCandidate kind: has_one to: CountryName via: country - from: ReturnJobForCandidate kind: has_many to: Language via: languages