{
 "openapi": "3.1.0",
 "info": {
  "title": "welds.in API",
  "version": "1.0.0",
  "description": "Search welding and skilled-trade jobs in India, and post them as a verified employer. The same operations are offered as MCP tools at /mcp.",
  "contact": {
   "email": "hello@welds.in"
  }
 },
 "servers": [
  {
   "url": "https://welds.in"
  }
 ],
 "paths": {
  "/api/v1/jobs": {
   "get": {
    "operationId": "search_jobs",
    "summary": "Search open jobs",
    "description": "Search open jobs. Filters: trade, city (slugs from get_taxonomy), job_type (full_time, contract, daily_wage), experience (fresher, 1_3, 3_5, 5_plus), salary_min (rupees a month), accommodation (true), since_days, sort (best, newest, salary), page (20 a page).",
    "parameters": [
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "trade",
      "in": "query",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "city",
      "in": "query",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "job_type",
      "in": "query",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "experience",
      "in": "query",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "salary_min",
      "in": "query",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "accommodation",
      "in": "query",
      "required": false,
      "schema": {
       "type": "boolean"
      }
     },
     {
      "name": "since_days",
      "in": "query",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "sort",
      "in": "query",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "page",
      "in": "query",
      "required": false,
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    }
   },
   "post": {
    "operationId": "post_job",
    "summary": "Post a job",
    "description": "Post a job. It is scored at once: live, live with a caution, or held with machine-readable reasons and what clears them.",
    "parameters": [
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "jobs:post"
      ]
     }
    ],
    "x-scope": "jobs:post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "title": {
          "type": "string"
         },
         "trade": {
          "type": "string"
         },
         "city": {
          "type": "string"
         },
         "locality": {
          "type": "string"
         },
         "salary_min": {
          "type": "integer"
         },
         "salary_max": {
          "type": "integer"
         },
         "salary_period": {
          "type": "string"
         },
         "experience": {
          "type": "string"
         },
         "openings": {
          "type": "integer"
         },
         "job_type": {
          "type": "string"
         },
         "accommodation": {
          "type": "boolean"
         },
         "food": {
          "type": "boolean"
         },
         "shift": {
          "type": "string"
         },
         "description": {
          "type": "string"
         },
         "contact_phone": {
          "type": "string"
         },
         "contact_whatsapp": {
          "type": "boolean"
         },
         "valid_days": {
          "type": "integer"
         }
        },
        "required": [
         "title",
         "trade",
         "city"
        ]
       }
      }
     }
    }
   }
  },
  "/api/v1/jobs/{id}": {
   "get": {
    "operationId": "get_job",
    "summary": "One job by id, as JSON with its JobPosting JSON-LD",
    "description": "One job by id, as JSON with its JobPosting JSON-LD. Closed jobs answer with their status.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    }
   },
   "patch": {
    "operationId": "edit_job",
    "summary": "Edit a job (any post_job field); it is scored again.",
    "description": "Edit a job (any post_job field); it is scored again.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "jobs:manage"
      ]
     }
    ],
    "x-scope": "jobs:manage",
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "title": {
          "type": "string"
         },
         "trade": {
          "type": "string"
         },
         "city": {
          "type": "string"
         },
         "locality": {
          "type": "string"
         },
         "salary_min": {
          "type": "integer"
         },
         "salary_max": {
          "type": "integer"
         },
         "salary_period": {
          "type": "string"
         },
         "experience": {
          "type": "string"
         },
         "openings": {
          "type": "integer"
         },
         "job_type": {
          "type": "string"
         },
         "accommodation": {
          "type": "boolean"
         },
         "food": {
          "type": "boolean"
         },
         "shift": {
          "type": "string"
         },
         "description": {
          "type": "string"
         },
         "contact_phone": {
          "type": "string"
         },
         "contact_whatsapp": {
          "type": "boolean"
         }
        },
        "required": []
       }
      }
     }
    }
   },
   "delete": {
    "operationId": "delete_job",
    "summary": "Delete a job.",
    "description": "Delete a job.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "jobs:manage"
      ]
     }
    ],
    "x-scope": "jobs:manage"
   }
  },
  "/api/v1/jobs/{id}/extend": {
   "post": {
    "operationId": "extend_job",
    "summary": "Keep a job open 30 more days (60 days at most from today).",
    "description": "Keep a job open 30 more days (60 days at most from today).",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "jobs:manage"
      ]
     }
    ],
    "x-scope": "jobs:manage"
   }
  },
  "/api/v1/jobs/{id}/filled": {
   "post": {
    "operationId": "mark_filled",
    "summary": "Mark a job as filled.",
    "description": "Mark a job as filled.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "jobs:manage"
      ]
     }
    ],
    "x-scope": "jobs:manage"
   }
  },
  "/api/v1/jobs/{id}/report": {
   "post": {
    "operationId": "report_job",
    "summary": "Report a job",
    "description": "Report a job. reason: fee, fake, wrong_contact, filled, offensive, other. Reports from identified agents weigh more; enough reports remove the job on their own.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "reason": {
          "type": "string"
         },
         "note": {
          "type": "string"
         }
        },
        "required": [
         "reason"
        ]
       }
      }
     }
    }
   }
  },
  "/api/v1/jobs/{id}/contest": {
   "post": {
    "operationId": "contest_removal",
    "summary": "Contest a held or removed job; the case is logged for the admin.",
    "description": "Contest a held or removed job; the case is logged for the admin.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "jobs:manage"
      ]
     }
    ],
    "x-scope": "jobs:manage",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "message": {
          "type": "string"
         }
        },
        "required": [
         "message"
        ]
       }
      }
     }
    }
   }
  },
  "/api/v1/jobs/{id}/contact": {
   "get": {
    "operationId": "get_job_contact",
    "summary": "The employer's phone number and WhatsApp link for one job",
    "description": "The employer's phone number and WhatsApp link for one job. Needs an identified client (X-Client-Id); limited to 10 a minute.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    }
   }
  },
  "/api/v1/employers": {
   "post": {
    "operationId": "create_employer",
    "summary": "Create an employer and get its token (shown once) with the scopes jobs:post, jobs:manage and employer:verify",
    "description": "Create an employer and get its token (shown once) with the scopes jobs:post, jobs:manage and employer:verify. Then verify the phone or the website before posting. type: company, contractor, staffing, individual.",
    "parameters": [
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "name": {
          "type": "string"
         },
         "type": {
          "type": "string"
         },
         "phone": {
          "type": "string"
         },
         "whatsapp": {
          "type": "boolean"
         },
         "city": {
          "type": "string"
         },
         "domain": {
          "type": "string"
         },
         "gstin": {
          "type": "string"
         }
        },
        "required": [
         "name",
         "type",
         "phone"
        ]
       }
      }
     }
    }
   }
  },
  "/api/v1/employers/{id}": {
   "get": {
    "operationId": "get_employer",
    "summary": "An employer's public profile: name, type, trust tier and its open jobs.",
    "description": "An employer's public profile: name, type, trust tier and its open jobs.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    }
   }
  },
  "/api/v1/me": {
   "get": {
    "operationId": "me",
    "summary": "The signed-in employer: trust tier, verifications, limits and live listings.",
    "description": "The signed-in employer: trust tier, verifications, limits and live listings.",
    "parameters": [
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "jobs:manage"
      ]
     }
    ],
    "x-scope": "jobs:manage"
   }
  },
  "/api/v1/me/jobs": {
   "get": {
    "operationId": "my_jobs",
    "summary": "This employer's jobs in every status, with the reasons for any held one.",
    "description": "This employer's jobs in every status, with the reasons for any held one.",
    "parameters": [
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "jobs:manage"
      ]
     }
    ],
    "x-scope": "jobs:manage"
   }
  },
  "/api/v1/verify/phone": {
   "post": {
    "operationId": "start_phone_verification",
    "summary": "Start phone verification: the employer sends the returned code on WhatsApp from its number to welds.in; the number is verified when the message arrives.",
    "description": "Start phone verification: the employer sends the returned code on WhatsApp from its number to welds.in; the number is verified when the message arrives.",
    "parameters": [
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "employer:verify"
      ]
     }
    ],
    "x-scope": "employer:verify"
   },
   "get": {
    "operationId": "phone_verification_status",
    "summary": "Whether the phone is verified yet.",
    "description": "Whether the phone is verified yet.",
    "parameters": [
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "employer:verify"
      ]
     }
    ],
    "x-scope": "employer:verify"
   }
  },
  "/api/v1/verify/domain": {
   "post": {
    "operationId": "start_domain_verification",
    "summary": "Start website verification: put the returned token in https://<domain>/.well-known/welds-verify.txt or in a DNS TXT record, then call check_domain_verification.",
    "description": "Start website verification: put the returned token in https://<domain>/.well-known/welds-verify.txt or in a DNS TXT record, then call check_domain_verification.",
    "parameters": [
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "employer:verify"
      ]
     }
    ],
    "x-scope": "employer:verify",
    "requestBody": {
     "required": false,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "domain": {
          "type": "string"
         }
        },
        "required": []
       }
      }
     }
    }
   }
  },
  "/api/v1/verify/domain/check": {
   "post": {
    "operationId": "check_domain_verification",
    "summary": "Look for the token now; on success the employer reaches tier 2.",
    "description": "Look for the token now; on success the employer reaches tier 2.",
    "parameters": [
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "employer:verify"
      ]
     }
    ],
    "x-scope": "employer:verify"
   }
  },
  "/api/v1/verify/gstin": {
   "post": {
    "operationId": "check_gstin",
    "summary": "Check a GSTIN's format and check digit and keep it",
    "description": "Check a GSTIN's format and check digit and keep it. Tier 3 also needs an official lookup, not connected yet.",
    "parameters": [
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    },
    "security": [
     {
      "employer_token": [
       "employer:verify"
      ]
     }
    ],
    "x-scope": "employer:verify",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "gstin": {
          "type": "string"
         }
        },
        "required": [
         "gstin"
        ]
       }
      }
     }
    }
   }
  },
  "/api/v1/taxonomy": {
   "get": {
    "operationId": "get_taxonomy",
    "summary": "The trades and cities (slugs, labels in English, Telugu and Hindi, states, nearby cities), and report reasons.",
    "description": "The trades and cities (slugs, labels in English, Telugu and Hindi, states, nearby cities), and report reasons.",
    "parameters": [
     {
      "name": "X-Client-Id",
      "in": "header",
      "required": false,
      "description": "Your agent's name or URL. Needed for contact numbers; sets your rate-limit bucket.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/Error"
     },
     "401": {
      "$ref": "#/components/responses/Error"
     },
     "403": {
      "$ref": "#/components/responses/Error"
     },
     "404": {
      "$ref": "#/components/responses/Error"
     },
     "422": {
      "$ref": "#/components/responses/Error"
     },
     "429": {
      "$ref": "#/components/responses/Error"
     }
    }
   }
  }
 },
 "components": {
  "securitySchemes": {
   "employer_token": {
    "type": "http",
    "scheme": "bearer",
    "description": "The token returned by POST /api/v1/employers. Scopes: jobs:post (posts listings), jobs:manage (edits, extends, closes them), employer:verify (proves the phone, website or GSTIN)."
   }
  },
  "responses": {
   "Error": {
    "description": "An error with a machine-readable code",
    "content": {
     "application/json": {
      "schema": {
       "type": "object",
       "properties": {
        "error": {
         "type": "object",
         "properties": {
          "code": {
           "type": "string"
          },
          "message": {
           "type": "string"
          }
         },
         "required": [
          "code",
          "message"
         ]
        }
       }
      }
     }
    }
   }
  }
 }
}