# Job

## Job model fields

Job model in database contains next fields:

* Required:
  * `id` (uuid)
  * `title` (CharField)
  * `location` (CharField)
  * `overview` (TextField)
  * `description` (TextField)
  * `posted` (DateField auto\_now\_add=True)
  * `is_featured` (BooleanField)
* Optional:
  * `salary` (CharField)
  * `image_url` (URLField)
  * `company` (ForeignKey to Company, setting to Null, if Company was deleted)
  * `industries` (ManyToManyField)
  * `skills` (ManyToManyField)
  * `closes` (DateField)
  * `experience` (CharField)
  * `hours` (PositiveSmallIntegerField)
  * `languages` (ArrayField of CharFields)

## Job View Set

### Create new job

Method `create(self, request)` acccepting POST requests with JSON information about new job.

**Returns**

* If ok:
  * Code status 200
  * `pk` JSON with Job id on bdn
* Else:
  * Code status 400
  * `error` JSON with errors

**Example**:

```
// POST Request to *your_bdn_host*/api/v1/jobs/

'/api/v1/jobs/',
data={
    'title': 'test',
    'location': 'test',
    'overview': 'test',
    'description': 'test',
    'hours': 1,
},
HTTP_AUTH_SIGNATURE='0xe646de646dde9cee6875e3845428ce6fc13d41086e8a7f6531d1d526598cc4104122e01c38255d1e1d595710986d193f52e3dbc47cb01cb554d8e4572d6920361c',
HTTP_AUTH_ETH_ADDRESS='D2BE64317Eb1832309DF8c8C18B09871809f3735'
```

### Get job info

Method `retrieve(self, request, pk=None)` acccepting GET requests with job id and reply with JSON information about job and company academy profile.

**Returns**

* If ok:
  * Code status 200
  * JSON with Job data and Academy data

**Example**

```
// GET Request to *your_bdn_host*/api/v1/jobs/(?P<pk>[^/.]+)/

'/api/v1/jobs/e0e433e9-477e-43a3-8e23-dfe2686202be/',
HTTP_AUTH_SIGNATURE='0xe646de646dde9cee6875e3845428ce6fc13d41086e8a7f6531d1d526598cc4104122e01c38255d1e1d595710986d193f52e3dbc47cb01cb554d8e4572d6920361c',
HTTP_AUTH_ETH_ADDRESS='D2BE64317Eb1832309DF8c8C18B09871809f3735')
```

### Get jobs list

Method `list(self, request)` acccepting GET requests reply with JSON information about jobs.

**Returns**

* If ok:
  * Code status 200
  * JSON with Jobs list data

**Example**

```
// GET Request to *your_bdn_host*/api/v1/jobs/

'/api/v1/jobs/',
HTTP_AUTH_SIGNATURE='0xe646de646dde9cee6875e3845428ce6fc13d41086e8a7f6531d1d526598cc4104122e01c38255d1e1d595710986d193f52e3dbc47cb01cb554d8e4572d6920361c',
HTTP_AUTH_ETH_ADDRESS='D2BE64317Eb1832309DF8c8C18B09871809f3735'
```

### Get job by id

Method `get_by_id(self, request, pk=None)` acccepting GET requests with job id and reply with JSON information about job.

**Returns**

* If ok:
  * Code status 200
  * JSON with Job data

**Example**

```
// GET Request to *your_bdn_host*/api/v1/jobs/(?P<pk>[^/.]+)/get_by_id/

'/api/v1/jobs/e0e433e9-477e-43a3-8e23-dfe2686202be/get_by_id/',
HTTP_AUTH_SIGNATURE='0xe646de646dde9cee6875e3845428ce6fc13d41086e8a7f6531d1d526598cc4104122e01c38255d1e1d595710986d193f52e3dbc47cb01cb554d8e4572d6920361c',
HTTP_AUTH_ETH_ADDRESS='D2BE64317Eb1832309DF8c8C18B09871809f3735')
```

### Get jobs by company

Method `get_by_company(self, request)` acccepting GET requests with inline `eth_address` and reply with JSON information about jobs by this company.

**Returns**

* If ok:
  * Code status 200
  * JSON with Jobs data

**Example**

```
// GET Request to *your_bdn_host*/api/v1/jobs/get_by_company/?eth_address=*some_addres*

'/api/v1/jobs/get_by_company/?eth_address=0x000',
HTTP_AUTH_SIGNATURE='0xe646de646dde9cee6875e3845428ce6fc13d41086e8a7f6531d1d526598cc4104122e01c38255d1e1d595710986d193f52e3dbc47cb01cb554d8e4572d6920361c',
HTTP_AUTH_ETH_ADDRESS='D2BE64317Eb1832309DF8c8C18B09871809f3735')
```

### Edit job by id

Method `edit_by_id(self, request, pk=None)` acccepting POST requests with new JSON information about job and inline id.

**Returns**

* If ok:
  * Code status 200

-Else if user is not creator of this job:

* Code status 401
* Else:
  * Code status 400
  * `error` JSON with errors

**Example**:

```
// POST Request to *your_bdn_host*/api/v1/jobs/(?P<pk>[^/.]+)/edit_by_id/

'/api/v1/jobs/e0e433e9-477e-43a3-8e23-dfe2686202be/edit_by_id/',
data={
    'title': 'test',
    'location': 'test',
    'overview': 'test',
    'description': 'test',
    'hours': 1,
},
HTTP_AUTH_SIGNATURE='0xe646de646dde9cee6875e3845428ce6fc13d41086e8a7f6531d1d526598cc4104122e01c38255d1e1d595710986d193f52e3dbc47cb01cb554d8e4572d6920361c',
HTTP_AUTH_ETH_ADDRESS='D2BE64317Eb1832309DF8c8C18B09871809f3735'
```

### Mark job as featured

Method `mark_featured_by_id(self, request, pk=None)` acccepting POST requests with inline id.

**Returns**

* If ok:
  * Code status 200

-Else if user is not creator of this job:

* Code status 401

**Example**:

```
// POST Request to *your_bdn_host*/api/v1/jobs/(?P<pk>[^/.]+)/mark_featured_by_id/

'/api/v1/jobs/e0e433e9-477e-43a3-8e23-dfe2686202be/mark_featured_by_id/',
data={
},
HTTP_AUTH_SIGNATURE='0xe646de646dde9cee6875e3845428ce6fc13d41086e8a7f6531d1d526598cc4104122e01c38255d1e1d595710986d193f52e3dbc47cb01cb554d8e4572d6920361c',
HTTP_AUTH_ETH_ADDRESS='D2BE64317Eb1832309DF8c8C18B09871809f3735'
```

### Delete job by id

Method `delete_by_id(self, request, pk=None)` acccepting POST requests with inline id.

**Returns**

* If ok:
  * Code status 200

-Else if user is not creator of this job:

* Code status 401

**Example**:

```
// POST Request to *your_bdn_host*/api/v1/jobs/(?P<pk>[^/.]+)/delete_by_id/

'/api/v1/jobs/e0e433e9-477e-43a3-8e23-dfe2686202be/delete_by_id/',
data={
},
HTTP_AUTH_SIGNATURE='0xe646de646dde9cee6875e3845428ce6fc13d41086e8a7f6531d1d526598cc4104122e01c38255d1e1d595710986d193f52e3dbc47cb01cb554d8e4572d6920361c',
HTTP_AUTH_ETH_ADDRESS='D2BE64317Eb1832309DF8c8C18B09871809f3735'
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.os.university/api-reference/job.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
