> ## Documentation Index
> Fetch the complete documentation index at: https://docs.userecord.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Place, employment type and shift

> Step 2b. Where the job is, and its employment type and shift.

Where the job is:

* **In India:** search a place with `GET /locations` and send it as the mandate's `location` (`name` → `city`, `state` → `state`).
* **Outside India:** list the countries with `GET /countries`, then send `location_type: "abroad"` and the picked `code`s (1–10) as `countries`.

Employment type and shift are fixed lists too: read them with `GET /employment-types` and `GET /shifts`, and send the pick as `employment_type` / `shift` so the playground shows it as a choice (other text is still accepted as sent).

All four are optional lookups that hold no data of yours; `mandates:read` or `mandates:write` opens them.

## Endpoints

### Search places in India

`GET /locations`

Type-ahead for a job’s place in India: matches the start of district and place names (up to 8 districts and 25 places). Use the place `name` as `location.city` and its `state` as `location.state`. For a job abroad use `GET /countries`.

**Scope:** `mandates:read` or `mandates:write`

| Query | Type | Description |
| - | - | - |
| `q` | `string` | 2 to 60 characters; matches the start of a district or place name. |

<CodeGroup>
  ```javascript JavaScript theme={null}
  const res = await call("GET", "/api/v1/partner/locations?q=coim");
  const { data } = await res.json();
  ```

  ```python Python theme={null}
  res = call("GET", "/api/v1/partner/locations?q=coim")
  data = res.json()["data"]
  ```

  ```bash cURL theme={null}
  pcall GET "/api/v1/partner/locations?q=coim"
  ```

  ```json 200 Response theme={null}
  {
    "success": true,
    "data": {
      "query": "coim",
      "districts": [
        {
          "location_id": "D_TN_COIMBATORE",
          "name": "Coimbatore",
          "state": "Tamil Nadu"
        }
      ],
      "places": [
        {
          "location_id": "P_0412873",
          "name": "Coimbatore",
          "district": "Coimbatore",
          "state": "Tamil Nadu"
        }
      ]
    }
  }
  ```
</CodeGroup>

| Error | When |
| - | - |
| 400 `VALIDATION_FAILED` | `q` missing, shorter than 2 or longer than 60 characters. |

Can also return the [common errors](/blue-collar-api/reference/errors). [Full schema](/api-reference/lookups/search-places-in-india)

***

### List countries

`GET /countries`

Every country an abroad job can be in, A to Z, in one answer (about 250): filter it in your own picker. Send the `code` of each pick as `countries` on a mandate with `location_type: "abroad"` (1–10). India is listed with `abroad_selectable: false`: jobs in India use `location`.

**Scope:** `mandates:read` or `mandates:write`

<CodeGroup>
  ```javascript JavaScript theme={null}
  const res = await call("GET", "/api/v1/partner/countries");
  const { data } = await res.json();
  ```

  ```python Python theme={null}
  res = call("GET", "/api/v1/partner/countries")
  data = res.json()["data"]
  ```

  ```bash cURL theme={null}
  pcall GET "/api/v1/partner/countries"
  ```

  ```json 200 Response theme={null}
  {
    "success": true,
    "data": {
      "items": [
        {
          "code": "AE",
          "name": "United Arab Emirates",
          "abroad_selectable": true
        },
        { "code": "IN", "name": "India", "abroad_selectable": false },
        { "code": "SG", "name": "Singapore", "abroad_selectable": true }
      ],
      "count": 3,
      "total": 3,
      "next_cursor": null,
      "has_more": false
    }
  }
  ```
</CodeGroup>

Can also return the [common errors](/blue-collar-api/reference/errors). [Full schema](/api-reference/lookups/list-countries)

***

### List employment types

`GET /employment-types`

The choices of the playground’s Employment type dropdown. Send one as `employment_type` of a mandate so it shows as a choice there. Other text is still accepted and kept as sent.

**Scope:** `mandates:read` or `mandates:write`

<CodeGroup>
  ```javascript JavaScript theme={null}
  const res = await call("GET", "/api/v1/partner/employment-types");
  const { data } = await res.json();
  ```

  ```python Python theme={null}
  res = call("GET", "/api/v1/partner/employment-types")
  data = res.json()["data"]
  ```

  ```bash cURL theme={null}
  pcall GET "/api/v1/partner/employment-types"
  ```

  ```json 200 Response theme={null}
  {
    "success": true,
    "data": {
      "items": [
        { "value": "Full-time" },
        { "value": "Part-time" },
        { "value": "Contract" },
        { "value": "Temporary" },
        { "value": "Internship" },
        { "value": "Apprenticeship" },
        { "value": "Freelance" },
        { "value": "Trainee" },
        { "value": "Seasonal" },
        { "value": "Gig / On-demand" }
      ],
      "count": 10,
      "total": 10,
      "next_cursor": null,
      "has_more": false
    }
  }
  ```
</CodeGroup>

Can also return the [common errors](/blue-collar-api/reference/errors). [Full schema](/api-reference/lookups/list-employment-types)

***

### List shifts

`GET /shifts`

The choices of the playground’s Shift dropdown. Send one as `shift` of a mandate. Other text is still accepted and kept as sent.

**Scope:** `mandates:read` or `mandates:write`

<CodeGroup>
  ```javascript JavaScript theme={null}
  const res = await call("GET", "/api/v1/partner/shifts");
  const { data } = await res.json();
  ```

  ```python Python theme={null}
  res = call("GET", "/api/v1/partner/shifts")
  data = res.json()["data"]
  ```

  ```bash cURL theme={null}
  pcall GET "/api/v1/partner/shifts"
  ```

  ```json 200 Response theme={null}
  {
    "success": true,
    "data": {
      "items": [
        { "value": "Day shift" },
        { "value": "Night shift" },
        { "value": "Rotational" },
        { "value": "General" }
      ],
      "count": 4,
      "total": 4,
      "next_cursor": null,
      "has_more": false
    }
  }
  ```
</CodeGroup>

Can also return the [common errors](/blue-collar-api/reference/errors). [Full schema](/api-reference/lookups/list-shifts)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.