openapi: 3.1.1
info:
  title: SalarySpecification
  version: "2.1.0"
  description: >
    Shared salary sub-schema for hiring-domain schemas. Captures a salary range
    (or fixed value via min == max) with currency and payment period.

    Design rationale: Salary data appears in two distinct contexts — job offers
    (what the employer proposes) and candidate profiles (what the candidate
    expects). Defining a single shared SalarySpecification type in hiring-common
    eliminates duplication, ensures consistent field naming across both contexts,
    and makes salary data machine-comparable for BAP-side matching. ISO 4217
    currency codes and the PER_GIG period variant accommodate gig/platform
    hiring networks alongside traditional employment.

components:
  schemas:
    SalarySpecification:
      type: object
      x-beckn-shared-type: true
      x-status: under-review
      x-tags:
        - hiring
        - hiring-common
        - shared-type
      description: >
        A salary range or fixed value with currency and payment period.
        For a fixed salary set salary_min == salary_max, or provide only salary_min.
      properties:
        salary_min:
          type: number
          minimum: 0
          description: Minimum (or fixed) salary value.
          x-jsonld-id: "salspec:salary_min"
        salary_max:
          type: number
          minimum: 0
          description: Maximum salary value for a range offer. Omit for fixed salary.
          x-jsonld-id: "salspec:salary_max"
        salary_currency:
          type: string
          description: ISO 4217 currency code (e.g. INR, USD, EUR).
          x-jsonld-id: "salspec:salary_currency"
        salary_period:
          type: string
          enum: [ANNUAL, MONTHLY, WEEKLY, HOURLY, PER_GIG]
          description: >
            Payment recurrence basis. PER_GIG is for task-based or gig engagements
            where pay is per completed unit rather than a time period.
          x-jsonld-id: "salspec:salary_period"
