Mechanic accepts job offer
curl --request POST \
--url http://localhost:3000/jobs/{id}/accept \
--header 'Authorization: Bearer <token>'import requests
url = "http://localhost:3000/jobs/{id}/accept"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:3000/jobs/{id}/accept', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/jobs/{id}/accept",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://localhost:3000/jobs/{id}/accept"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:3000/jobs/{id}/accept")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/jobs/{id}/accept")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vehicle_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"service_category_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"pickup_address": "<string>",
"pickup_lat": 123,
"pickup_lng": 123,
"description": "<string>",
"estimated_price": 123,
"final_price": 123,
"base_price": 123,
"cancellation_fee": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"mechanic_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"photo_urls": [
"<string>"
],
"cancel_reason": "<string>",
"hms_room_id": "<string>",
"disputed_at": "2023-11-07T05:31:56Z",
"resolved_at": "2023-11-07T05:31:56Z",
"beneficiary_name": "<string>",
"beneficiary_phone": "<string>",
"contact_preference": "booker"
}{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"errors": {}
}
}{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"errors": {}
}
}{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"errors": {}
}
}{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"errors": {}
}
}jobs
Mechanic accepts job offer
Atomically claims the mechanic’s availability and assigns them to the job. Returns 409 if the mechanic is already on another job or if another mechanic accepted first. On success, other pending offers for this job are expired, and the mechanic’s pending offers for other jobs are superseded.
POST
/
jobs
/
{id}
/
accept
Mechanic accepts job offer
curl --request POST \
--url http://localhost:3000/jobs/{id}/accept \
--header 'Authorization: Bearer <token>'import requests
url = "http://localhost:3000/jobs/{id}/accept"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:3000/jobs/{id}/accept', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/jobs/{id}/accept",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://localhost:3000/jobs/{id}/accept"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:3000/jobs/{id}/accept")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/jobs/{id}/accept")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vehicle_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"service_category_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"pickup_address": "<string>",
"pickup_lat": 123,
"pickup_lng": 123,
"description": "<string>",
"estimated_price": 123,
"final_price": 123,
"base_price": 123,
"cancellation_fee": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"mechanic_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"photo_urls": [
"<string>"
],
"cancel_reason": "<string>",
"hms_room_id": "<string>",
"disputed_at": "2023-11-07T05:31:56Z",
"resolved_at": "2023-11-07T05:31:56Z",
"beneficiary_name": "<string>",
"beneficiary_phone": "<string>",
"contact_preference": "booker"
}{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"errors": {}
}
}{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"errors": {}
}
}{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"errors": {}
}
}{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"errors": {}
}
}Authorizations
JWT access token from /auth/verify-otp
Path Parameters
Response
Job accepted
Available options:
pending, dispatching, accepted, en_route, arrived, in_progress, completed, paid, cancelled, no_mechanic_found, disputed, resolved Latitude of pickup location (-90 to 90)
Longitude of pickup location (-180 to 180)
100ms room ID for in-job audio call (null until first comms request)
Name of the person the service is being booked for (book-for-others feature)
Phone number of the beneficiary (+91XXXXXXXXXX format)
Who the mechanic should contact — the customer who booked or the beneficiary
Available options:
booker, beneficiary Was this page helpful?
