Introduction
This documentation aims to provide all the information you need to work with Plus-Auto Marketplace API.
Authorize
Authorize Dealer
requires authentication
Log-in dealer and generate API token.
This endpoint authenticates and authorizes a dealer to use the API by using the provided dealer main account email and password. On success, it revokes any previous tokens and generates a new API token.
Note: Token is valid for 30 days from the date when is generated.
Use the token to authenticate requests to API by including it as follows:
Authorization: Bearer token
De-authorize Dealer
requires authentication
Logout dealer and delete API token.
This endpoint deauthenticates and logout dealer from Plus Auto Marketplace API. On success, it revokes the current active token. Use the token to logout from API by including it as follows:
Authorization: Bearer token
Ads
List
requires authentication
Retrieve a paginated list of Ads. By default, this endpoint returns up to a pre-defined number of Ads per page, but you can change the pagination settings by using query parameters.
Note: The returned list contains only limited information for each Ad. To view full Ad details, you must use the corresponding "Ads -> Show" endpoint.
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/ads?page%5Bsize%5D=3&page%5Bnumber%5D=6" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json" \
--data "{
\"sort\": \"\\\"rollingKm,-publicationDate\\\" filters by rollingKm ascending and by publicationDate descending.\",
\"filter[status]\": 0,
\"filter[saleType]\": \"filter[saleType]=1,2\",
\"filter[priceType]\": 0,
\"filter[seller]\": \"filter[seller]=razvan-casian\",
\"filter[renewal]\": 0,
\"filter[expirationDate]\": \"filter[expirationDate]=2025-04-25,2025-06-04\",
\"filter[publicationDate]\": \"filter[publicationDate]=2025-01-15,2025-03-18\",
\"filter[createdAt]\": \"filter[createdAt]=2025-05-25\"
}"
const url = new URL(
"https://api.plus-auto.ro/v1/ads"
);
const params = {
"page[size]": "3",
"page[number]": "6",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
let body = {
"sort": "\"rollingKm,-publicationDate\" filters by rollingKm ascending and by publicationDate descending.",
"filter[status]": 0,
"filter[saleType]": "filter[saleType]=1,2",
"filter[priceType]": 0,
"filter[seller]": "filter[seller]=razvan-casian",
"filter[renewal]": 0,
"filter[expirationDate]": "filter[expirationDate]=2025-04-25,2025-06-04",
"filter[publicationDate]": "filter[publicationDate]=2025-01-15,2025-03-18",
"filter[createdAt]": "filter[createdAt]=2025-05-25"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
'query' => [
'page[size]' => '3',
'page[number]' => '6',
],
'json' => [
'sort' => '"rollingKm,-publicationDate" filters by rollingKm ascending and by publicationDate descending.',
'filter[status]' => 0,
'filter[saleType]' => 'filter[saleType]=1,2',
'filter[priceType]' => 0,
'filter[seller]' => 'filter[seller]=razvan-casian',
'filter[renewal]' => 0,
'filter[expirationDate]' => 'filter[expirationDate]=2025-04-25,2025-06-04',
'filter[publicationDate]' => 'filter[publicationDate]=2025-01-15,2025-03-18',
'filter[createdAt]' => 'filter[createdAt]=2025-05-25',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads'
payload = {
"sort": "\"rollingKm,-publicationDate\" filters by rollingKm ascending and by publicationDate descending.",
"filter[status]": 0,
"filter[saleType]": "filter[saleType]=1,2",
"filter[priceType]": 0,
"filter[seller]": "filter[seller]=razvan-casian",
"filter[renewal]": 0,
"filter[expirationDate]": "filter[expirationDate]=2025-04-25,2025-06-04",
"filter[publicationDate]": "filter[publicationDate]=2025-01-15,2025-03-18",
"filter[createdAt]": "filter[createdAt]=2025-05-25"
}
params = {
'page[size]': '3',
'page[number]': '6',
}
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 1,
"perPage": 3,
"to": 3,
"total": 3
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "https://api.plus-auto.ro/v1/ads?page%5Bnumber%5D=1&page%5Bsize%5D=3",
"last": "https://api.plus-auto.ro/v1/ads?page%5Bnumber%5D=1&page%5Bsize%5D=3"
},
"data": [
{
"type": "ads",
"id": 78345,
"attributes": {
"salesType": 1,
"title": "Test API 1",
"status": 1,
"publicationDate": "2025-04-23T21:00:00.000000Z",
"expirationDate": "2025-05-23T21:00:00.000000Z"
}
},
{
"type": "ads",
"id": 78346,
"attributes": {
"salesType": 1,
"title": "Test API 2",
"status": 0,
"publicationDate": null,
"expirationDate": null
}
},
{
"type": "ads",
"id": 78347,
"attributes": {
"salesType": 1,
"title": "Test API 3",
"status": 0,
"publicationDate": null,
"expirationDate": null
}
},
{
"type": "ads",
"id": 78348,
"attributes": {
"salesType": 1,
"title": "Test API 4",
"status": 0,
"publicationDate": null,
"expirationDate": null
}
},
{
"type": "ads",
"id": 78349,
"attributes": {
"salesType": 1,
"title": "Test API 5",
"status": 0,
"publicationDate": null,
"expirationDate": null
}
},
{
"type": "ads",
"id": 78350,
"attributes": {
"salesType": 1,
"title": "Test API 6",
"status": 1,
"publicationDate": "2025-04-23T21:00:00.000000Z",
"expirationDate": "2025-05-23T21:00:00.000000Z"
}
}
]
}
Example response (401):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Unauthenticated",
"status": "401",
"title": "Unauthenticated"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show
requires authentication
Retrieve Ad full details. By default, this endpoint returns all Ad fields but no related resources.
Use the include
query parameter to load related resources.
Note: Possible related resources to include are: class, category, maker, model, parameters, features, seller, location, facilities, exchangeRule
Example: v1/ads/{adId}?include=class,category,maker,model,parameters,features,seller,location
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/ads/78350?include=class%2Ccategory%2Cmaker%2Cmodel%2Cparameters%2Cfeatures%2Clocation" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/78350"
);
const params = {
"include": "class,category,maker,model,parameters,features,location",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
'query' => [
'include' => 'class,category,maker,model,parameters,features,location',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/78350'
params = {
'include': 'class,category,maker,model,parameters,features,location',
}
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"data": {
"type": "ads",
"id": 78345,
"attributes": {
"saleType": 1,
"title": "Test API 1",
"price": "55660.00",
"priceType": 1,
"renewal": true,
"views": 0,
"publicationDate": "2025-04-23T21:00:00.000000Z",
"expirationDate": "2025-05-24T20:59:59.000000Z",
"description": "Test API 1",
"showVin": true,
"status": 1,
"exchangeRate": 4.95,
"variant": "GT Line",
"plugin": true,
"capacity": 2000,
"power": 250,
"manufactureYear": 2015,
"firstRegistration": "06.2023",
"rollingKm": 45300,
"vin": "1FVAF3CV84DM31820",
"isImported": true,
"ownWeight": 1520,
"maxWeight": 2100,
"seats": 5,
"axles": 2,
"numberOfBunks": 2,
"loadCapacity": 1500,
"length": 4.5,
"videoUrl": "https://www.youtube.com/watch?v=abc1234dummy",
"createdAt": "2025-04-24T10:20:36.000000Z"
},
"relationships": {
"class": {
"data": {
"type": "classes",
"id": "car"
}
},
"category": {
"data": {
"type": "categories",
"id": "offroad"
}
},
"maker": {
"data": {
"type": "makers",
"id": "abarth"
}
},
"model": {
"data": {
"type": "models",
"id": "andere"
}
},
"parameters": {
"data": [
{
"type": "parameters",
"id": "condition",
"values": [
"used"
]
},
{
"type": "parameters",
"id": "door-count",
"values": [
"two_or_three"
]
},
{
"type": "parameters",
"id": "speed-control",
"values": [
"cruise_control"
]
},
{
"type": "parameters",
"id": "parking-assistants",
"values": [
"front_sensors",
"rear_sensors",
"rear_view_cam"
]
},
{
"type": "parameters",
"id": "interior-type",
"values": [
"leather"
]
},
{
"type": "parameters",
"id": "airbag",
"values": [
"front_and_side_and_more_airbags"
]
},
{
"type": "parameters",
"id": "emission-class",
"values": [
"euro6d"
]
},
{
"type": "parameters",
"id": "interior-color",
"values": [
"black"
]
},
{
"type": "parameters",
"id": "climatisation",
"values": [
"automatic_climatisation_2_zones"
]
},
{
"type": "parameters",
"id": "fuel",
"values": [
"hybrid_diesel"
]
},
{
"type": "parameters",
"id": "gearbox",
"values": [
"automatic_gear"
]
},
{
"type": "parameters",
"id": "exterior-color",
"values": [
"black"
]
}
]
},
"features": {
"data": {
"type": "features",
"ids": [
"ALL_SEASON_TIRES",
"CENTRAL_LOCKING",
"ISOFIX",
"PASSENGER_SEAT_ISOFIX_POINT",
"AMBIENT_LIGHTING",
"FULL_SERVICE_HISTORY"
]
}
},
"location": {
"data": {
"type": "locations",
"id": 84
}
}
}
}
}
Example response (401):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Invalid type for field ad. Expected integer, but received string",
"source": {
"parameter": "adId"
},
"status": "400"
}
]
}
Example response (404):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The requested resource could not be found",
"meta": {
"model": "Ad",
"id": "78185555"
},
"status": "404",
"title": "Not Found"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create
requires authentication
Creates a new Ad record along with its associated vehicle data, relationships, and details.
Important: The list of parameters and features depends on the vehicle class. Please consult:
/v1/vehicle/classes/{classId}/parameters
– for the list of available parameters (indicating mandatory vs optional and single vs multiple value)./v1/vehicle/classes/{classId}/features
– for the list of available features.
Request Attributes
Parameter | Type | Required/Optional | Description |
---|---|---|---|
saleType | int | Required | Sale type (e.g., 0 = On order, 1 = In stock, 2 = Brokerage) |
title | string | Required | Ad title, max. 60 characters |
price | number | Required | Ad price, no decimals |
priceType | int | Required | Price type (e.g., 0 = Net, 1 = Gross) |
renewal | boolean | Optional (defaults to true if not provided) | Renewal flag |
description | string | Optional | Ad description, max. 100000 characters |
showVin | boolean | Required | Flag to display VIN in the Marketplace |
variant | string | Optional | Vehicle model; required when the vehicle class is not "Car", optional otherwise, max. 20 characters |
plugin | boolean | Optional | Plugin flag indicating the vehicle is plugin type |
capacity | number | Required | Engine capacity in cm3 |
power | number | Required | Engine power in horse power (hp) |
manufactureYear | int | Required | Year of manufacture |
firstRegistration | string (date m.Y) | Required | First registration date, month.year format |
rollingKm | int | Required | Mileage in km. For new vehicles max. accepted value is 50 km. |
vin | string | Conditionally Required (if saleType is 1 or 2) | Vehicle Identification Number (VIN) |
exchangeRate | number | Conditionally Required (if exchangeRule customRate is true) | Currency exchange rate EUR-RON used to convert price in RON, required only when exchangeRule customRate is true |
isImported | boolean | Required | Vehicle imported status flag (e.g., 0 = NO, 1 = YES) |
ownWeight | number | Optional | Vehicle's own weight in kg |
maxWeight | number | Optional | Maximum weight (vehicle plus load) in kg |
seats | int | Optional | Number of seats |
axles | int | Optional | Number of axles |
numberOfBunks | int | Optional | Number of bunks |
loadCapacity | number | Optional | Load capacity in kg |
length | int | Optional | Vehicle length in milimeters |
videoUrl | string | Optional | Video URL (YouTube or Vimeo accepted) |
Ad Relationships
Parameter | Type | Required/Optional | Description |
---|---|---|---|
class | object | Required | Vehicle class id |
category | object | Required | Vehicle category id |
maker | object | Required | Vehicle maker id |
model | object | Conditionally Required (if vehicle class is "Car") | Vehicle model id (if not provided, use the variant field for non-Car classes) |
parameters | array of objects | Required | Vehicke parameters; each object must include a type ("parameters"), an id, and an array with values |
features | array of objects | Optional | Vehicle features |
facilities | array of objects | Optional | Dealer Facilities ids provided for the Ad |
location | object | Required | Dealer location id associated to the Ad |
exchangeRule | object | Required | Exchange rule id (criteria used for exchange rates) |
Example Full Request Body
{
"data": {
"type": "ads",
"attributes": {
"saleType": 1,
"title": "Exclusive Ford Fusion Offer",
"price": 37999,
"priceType": 1,
"renewal": false,
"description": "Ad published via Plus-Auto Marketplace API",
"showVin": true,
"plugin": true,
"capacity": 2000,
"power": 180,
"manufactureYear": 2021,
"firstRegistration": "08.2021",
"rollingKm": 45300,
"vin": "2FTRX18L4XCA01234",
"exchangeRate": 4.99,
"isImported": true,
"ownWeight": 1600,
"maxWeight": 2200,
"seats": 5,
"axles": 2,
"numberOfBunks": null,
"loadCapacity": 500,
"length": 4400,
"videoUrl": "https://youtube.com/video/38mjdogdmklp2"
},
"relationships": {
"class": {
"data": {
"type": "classes",
"id": "car"
}
},
"category": {
"data": {
"type": "categories",
"id": "estatecar"
}
},
"maker": {
"data": {
"type": "makers",
"id": "ford"
}
},
"model": {
"data": {
"type": "models",
"id": "fusion"
}
},
"parameters": {
"data": [
{
"type": "parameters",
"id": "condition",
"values": ["used"]
},
{
"type": "parameters",
"id": "door-count",
"values": ["four"]
},
{
"type": "parameters",
"id": "speed-control",
"values": ["cruise_control"]
},
{
"type": "parameters",
"id": "parking-assistants",
"values": ["front_sensors","rear_sensors"]
},
{
"type": "parameters",
"id": "interior-type",
"values": ["leather"]
},
{
"type": "parameters",
"id": "airbag",
"values": ["front_side_airbags"]
},
{
"type": "parameters",
"id": "emission-class",
"values": ["euro6"]
},
{
"type": "parameters",
"id": "interior-color",
"values": ["black"]
},
{
"type": "parameters",
"id": "climatisation",
"values": ["automatic"]
},
{
"type": "parameters",
"id": "fuel",
"values": ["hybrid_diesel"]
},
{
"type": "parameters",
"id": "gearbox",
"values": ["automatic"]
},
{
"type": "parameters",
"id": "exterior-color",
"values": ["red"]
}
]
},
"features": {
"data": {
"type": "features",
"ids": [
"LED_HEADLIGHTS",
"KEYLESS_ENTRY",
"PARKING_SENSORS",
"CRUISE_CONTROL",
"BLUETOOTH_CONNECTIVITY",
"REAR_CAMERA"
]
}
},
"seller": {
"data": {
"type": "sellers",
"id": "razvan-casian"
}
},
"location": {
"data": {
"type": "locations",
"id": 10
}
},
"facilities": {
"data": {
"type": "facilities",
"ids": [204, 205]
}
},
"exchangeRule": {
"data": {
"type": "exchangeRules",
"id": 4
}
}
}
}
}
Example request:
curl --request POST \
"https://api.plus-auto.ro/v1/ads" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json" \
--data "{
\"saleType\": 1,
\"title\": \"\\\"Audi A6 Premium Red\\\".\",
\"priceType\": 1,
\"description\": \"\\\"A powerful Red Audi A6 in excellent condition.\\\"\",
\"showVin\": true,
\"variant\": \"\\\"Streetfighter V4 Lamborghini\\\" for a Ducati motorbike.\",
\"plugin\": true,
\"capacity\": 2000,
\"power\": 250,
\"manufactureYear\": 2023,
\"firstRegistration\": \"\\\"06.2023\\\".\",
\"rollingKm\": 45300,
\"vin\": \"\\\"1FVAF3CV84DM31820\\\".\",
\"exchangeRate\": 4.99,
\"isImported\": true,
\"ownWeight\": 2145,
\"maxWeight\": 2800,
\"seats\": 4,
\"axles\": 2,
\"numberOfBunks\": 2,
\"loadCapacity\": 500,
\"length\": 3500,
\"videoUrl\": \"\\\"https:\\/\\/www.youtube.com\\/embed\\/tuvMZsH7sKU\\\".\",
\"class\": \"{\\\"type\\\": \\\"classes\\\", \\\"id\\\": \\\"Car\\\"}.\",
\"category\": \"{\\\"type\\\": \\\"categories\\\", \\\"id\\\": \\\"sport\\\"}.\",
\"maker\": \"{\\\"type\\\": \\\"makers\\\", \\\"id\\\": \\\"mercedes-benz\\\"}.\",
\"model\": \"{\\\"type\\\": \\\"models\\\", \\\"id\\\": \\\"GLC_200\\\"}.\",
\"parameters\": \"[\\n {\\n \\\"type\\\": \\\"parameters\\\",\\n \\\"id\\\": \\\"fuel\\\",\\n \\\"values\\\": [\\\"hybrid_diesel\\\"]\\n },\\n {\\n \\\"type\\\": \\\"parameters\\\",\\n \\\"id\\\": \\\"airbag\\\",\\n \\\"values\\\": [\\\"front_and_side\\\"]\\n }\\n]\",
\"features\": \"{\\n \\\"type\\\": \\\"features\\\",\\n \\\"ids\\\": [\\n \\\"ALL_SEASON_TIRES\\\",\\n \\\"CENTRAL_LOCKING\\\",\\n \\\"ISOFIX\\\"\\n ]\\n}\",
\"sellers\": 0,
\"facilities\": \"[{\\\"type\\\": \\\"facilities\\\", \\\"ids\\\": [2, 5]}].\",
\"location\": \"{\\\"type\\\": \\\"locations\\\", \\\"id\\\": \\\"5\\\"}.\",
\"exchangeRule\": \"{\\\"type\\\": \\\"exchange-rules\\\", \\\"id\\\": \\\"4\\\"}.\"
}"
const url = new URL(
"https://api.plus-auto.ro/v1/ads"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
let body = {
"saleType": 1,
"title": "\"Audi A6 Premium Red\".",
"priceType": 1,
"description": "\"A powerful Red Audi A6 in excellent condition.\"",
"showVin": true,
"variant": "\"Streetfighter V4 Lamborghini\" for a Ducati motorbike.",
"plugin": true,
"capacity": 2000,
"power": 250,
"manufactureYear": 2023,
"firstRegistration": "\"06.2023\".",
"rollingKm": 45300,
"vin": "\"1FVAF3CV84DM31820\".",
"exchangeRate": 4.99,
"isImported": true,
"ownWeight": 2145,
"maxWeight": 2800,
"seats": 4,
"axles": 2,
"numberOfBunks": 2,
"loadCapacity": 500,
"length": 3500,
"videoUrl": "\"https:\/\/www.youtube.com\/embed\/tuvMZsH7sKU\".",
"class": "{\"type\": \"classes\", \"id\": \"Car\"}.",
"category": "{\"type\": \"categories\", \"id\": \"sport\"}.",
"maker": "{\"type\": \"makers\", \"id\": \"mercedes-benz\"}.",
"model": "{\"type\": \"models\", \"id\": \"GLC_200\"}.",
"parameters": "[\n {\n \"type\": \"parameters\",\n \"id\": \"fuel\",\n \"values\": [\"hybrid_diesel\"]\n },\n {\n \"type\": \"parameters\",\n \"id\": \"airbag\",\n \"values\": [\"front_and_side\"]\n }\n]",
"features": "{\n \"type\": \"features\",\n \"ids\": [\n \"ALL_SEASON_TIRES\",\n \"CENTRAL_LOCKING\",\n \"ISOFIX\"\n ]\n}",
"sellers": 0,
"facilities": "[{\"type\": \"facilities\", \"ids\": [2, 5]}].",
"location": "{\"type\": \"locations\", \"id\": \"5\"}.",
"exchangeRule": "{\"type\": \"exchange-rules\", \"id\": \"4\"}."
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
'json' => [
'saleType' => 1,
'title' => '"Audi A6 Premium Red".',
'priceType' => 1,
'description' => '"A powerful Red Audi A6 in excellent condition."',
'showVin' => true,
'variant' => '"Streetfighter V4 Lamborghini" for a Ducati motorbike.',
'plugin' => true,
'capacity' => 2000.0,
'power' => 250.0,
'manufactureYear' => 2023,
'firstRegistration' => '"06.2023".',
'rollingKm' => 45300,
'vin' => '"1FVAF3CV84DM31820".',
'exchangeRate' => 4.99,
'isImported' => true,
'ownWeight' => 2145.0,
'maxWeight' => 2800.0,
'seats' => 4,
'axles' => 2,
'numberOfBunks' => 2,
'loadCapacity' => 500.0,
'length' => 3500.0,
'videoUrl' => '"https://www.youtube.com/embed/tuvMZsH7sKU".',
'class' => '{"type": "classes", "id": "Car"}.',
'category' => '{"type": "categories", "id": "sport"}.',
'maker' => '{"type": "makers", "id": "mercedes-benz"}.',
'model' => '{"type": "models", "id": "GLC_200"}.',
'parameters' => '['."\n"
.' {'."\n"
.' "type": "parameters",'."\n"
.' "id": "fuel",'."\n"
.' "values": ["hybrid_diesel"]'."\n"
.' },'."\n"
.' {'."\n"
.' "type": "parameters",'."\n"
.' "id": "airbag",'."\n"
.' "values": ["front_and_side"]'."\n"
.' }'."\n"
.']',
'features' => '{'."\n"
.' "type": "features",'."\n"
.' "ids": ['."\n"
.' "ALL_SEASON_TIRES",'."\n"
.' "CENTRAL_LOCKING",'."\n"
.' "ISOFIX"'."\n"
.' ]'."\n"
.'}',
'sellers' => 0,
'facilities' => '[{"type": "facilities", "ids": [2, 5]}].',
'location' => '{"type": "locations", "id": "5"}.',
'exchangeRule' => '{"type": "exchange-rules", "id": "4"}.',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads'
payload = {
"saleType": 1,
"title": "\"Audi A6 Premium Red\".",
"priceType": 1,
"description": "\"A powerful Red Audi A6 in excellent condition.\"",
"showVin": true,
"variant": "\"Streetfighter V4 Lamborghini\" for a Ducati motorbike.",
"plugin": true,
"capacity": 2000,
"power": 250,
"manufactureYear": 2023,
"firstRegistration": "\"06.2023\".",
"rollingKm": 45300,
"vin": "\"1FVAF3CV84DM31820\".",
"exchangeRate": 4.99,
"isImported": true,
"ownWeight": 2145,
"maxWeight": 2800,
"seats": 4,
"axles": 2,
"numberOfBunks": 2,
"loadCapacity": 500,
"length": 3500,
"videoUrl": "\"https:\/\/www.youtube.com\/embed\/tuvMZsH7sKU\".",
"class": "{\"type\": \"classes\", \"id\": \"Car\"}.",
"category": "{\"type\": \"categories\", \"id\": \"sport\"}.",
"maker": "{\"type\": \"makers\", \"id\": \"mercedes-benz\"}.",
"model": "{\"type\": \"models\", \"id\": \"GLC_200\"}.",
"parameters": "[\n {\n \"type\": \"parameters\",\n \"id\": \"fuel\",\n \"values\": [\"hybrid_diesel\"]\n },\n {\n \"type\": \"parameters\",\n \"id\": \"airbag\",\n \"values\": [\"front_and_side\"]\n }\n]",
"features": "{\n \"type\": \"features\",\n \"ids\": [\n \"ALL_SEASON_TIRES\",\n \"CENTRAL_LOCKING\",\n \"ISOFIX\"\n ]\n}",
"sellers": 0,
"facilities": "[{\"type\": \"facilities\", \"ids\": [2, 5]}].",
"location": "{\"type\": \"locations\", \"id\": \"5\"}.",
"exchangeRule": "{\"type\": \"exchange-rules\", \"id\": \"4\"}."
}
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (200):
{
"jsonapi": {
"version": "1.0"
},
"meta": {
"message": "Ad successfully created with id: 78313"
},
"data": {
"adId": 78313
}
}
Example response (404):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The requested resource could not be found",
"meta": {
"model": "Ad",
"id": "78185555"
},
"status": "404",
"title": "Not Found"
}
]
}
Example response (422):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The is imported field must be true or false.",
"status": "422",
"title": "Validation Error"
}
]
}
Example response (500):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Missing mandatory class relationship",
"status": "500",
"title": "Internal Server Error"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Edit
requires authentication
Edits/Updates an existing Ad record. The request payload for updating Ad is identical to that used for creating Ad, excepting the Ad id that is required to identify the Ad to be edited/updated. For full details on the expected parameters and relationships, please refer to the Store Ad endpoint documentation.
Note: The Ad update request includes all parameters defined for Ad creation.
Example request:
curl --request PATCH \
"https://api.plus-auto.ro/v1/ads/{adId}" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json" \
--data "{
\"saleType\": 1,
\"title\": \"\\\"BMW M3\\\".\",
\"priceType\": 1,
\"description\": \"\\\"A powerful BMW M3 in excellent condition, first owner, no accidents.\\\"\",
\"showVin\": true,
\"variant\": \"\\\"Express Comfort\\\" for a Renault van.\",
\"plugin\": true,
\"capacity\": 2000,
\"power\": 250,
\"manufactureYear\": 2023,
\"firstRegistration\": \"\\\"06.2023\\\".\",
\"rollingKm\": 45300,
\"vin\": \"\\\"1FVAF3CV84DM31820\\\".\",
\"exchangeRate\": 4.99,
\"isImported\": true,
\"ownWeight\": 1500,
\"maxWeight\": 2200,
\"seats\": 7,
\"axles\": 2,
\"numberOfBunks\": 2,
\"loadCapacity\": 800,
\"length\": 5000,
\"videoUrl\": \"\\\"https:\\/\\/www.vimeo.com\\/459msfnkjdfhde\\\".\",
\"class\": \"{\\\"type\\\": \\\"classes\\\", \\\"id\\\": \\\"Car\\\"}.\",
\"category\": \"{\\\"type\\\": \\\"categories\\\", \\\"id\\\": \\\"offroad\\\"}.\",
\"maker\": \"{\\\"type\\\": \\\"makers\\\", \\\"id\\\": \\\"bmw\\\"}.\",
\"model\": \"{\\\"type\\\": \\\"models\\\", \\\"id\\\": \\\"x6\\\"}.\",
\"parameters\": \"[\\n {\\n \\\"type\\\": \\\"parameters\\\",\\n \\\"id\\\": \\\"fuel\\\",\\n \\\"values\\\": [\\\"hybrid_diesel\\\"]\\n },\\n {\\n \\\"type\\\": \\\"parameters\\\",\\n \\\"id\\\": \\\"airbag\\\",\\n \\\"values\\\": [\\\"front_and_side\\\"]\\n }\\n]\",
\"features\": \"{\\n \\\"type\\\": \\\"features\\\",\\n \\\"ids\\\": [\\n \\\"ALL_SEASON_TIRES\\\",\\n \\\"CENTRAL_LOCKING\\\",\\n \\\"ISOFIX\\\"\\n ]\\n}\",
\"sellers\": \"[{\\\"type\\\": \\\"sellers\\\", \\\"id\\\": \\\"120\\\"}].\",
\"facilities\": \"[{\\\"type\\\": \\\"facilities\\\", \\\"id\\\": [7, 20]}].\",
\"location\": \"{\\\"type\\\": \\\"locations\\\", \\\"id\\\": \\\"5\\\"}.\",
\"exchangeRule\": \"{\\\"type\\\": \\\"exchange-rules\\\", \\\"id\\\": \\\"5\\\"}.\"
}"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/{adId}"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
let body = {
"saleType": 1,
"title": "\"BMW M3\".",
"priceType": 1,
"description": "\"A powerful BMW M3 in excellent condition, first owner, no accidents.\"",
"showVin": true,
"variant": "\"Express Comfort\" for a Renault van.",
"plugin": true,
"capacity": 2000,
"power": 250,
"manufactureYear": 2023,
"firstRegistration": "\"06.2023\".",
"rollingKm": 45300,
"vin": "\"1FVAF3CV84DM31820\".",
"exchangeRate": 4.99,
"isImported": true,
"ownWeight": 1500,
"maxWeight": 2200,
"seats": 7,
"axles": 2,
"numberOfBunks": 2,
"loadCapacity": 800,
"length": 5000,
"videoUrl": "\"https:\/\/www.vimeo.com\/459msfnkjdfhde\".",
"class": "{\"type\": \"classes\", \"id\": \"Car\"}.",
"category": "{\"type\": \"categories\", \"id\": \"offroad\"}.",
"maker": "{\"type\": \"makers\", \"id\": \"bmw\"}.",
"model": "{\"type\": \"models\", \"id\": \"x6\"}.",
"parameters": "[\n {\n \"type\": \"parameters\",\n \"id\": \"fuel\",\n \"values\": [\"hybrid_diesel\"]\n },\n {\n \"type\": \"parameters\",\n \"id\": \"airbag\",\n \"values\": [\"front_and_side\"]\n }\n]",
"features": "{\n \"type\": \"features\",\n \"ids\": [\n \"ALL_SEASON_TIRES\",\n \"CENTRAL_LOCKING\",\n \"ISOFIX\"\n ]\n}",
"sellers": "[{\"type\": \"sellers\", \"id\": \"120\"}].",
"facilities": "[{\"type\": \"facilities\", \"id\": [7, 20]}].",
"location": "{\"type\": \"locations\", \"id\": \"5\"}.",
"exchangeRule": "{\"type\": \"exchange-rules\", \"id\": \"5\"}."
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/{adId}';
$response = $client->patch(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
'json' => [
'saleType' => 1,
'title' => '"BMW M3".',
'priceType' => 1,
'description' => '"A powerful BMW M3 in excellent condition, first owner, no accidents."',
'showVin' => true,
'variant' => '"Express Comfort" for a Renault van.',
'plugin' => true,
'capacity' => 2000.0,
'power' => 250.0,
'manufactureYear' => 2023,
'firstRegistration' => '"06.2023".',
'rollingKm' => 45300,
'vin' => '"1FVAF3CV84DM31820".',
'exchangeRate' => 4.99,
'isImported' => true,
'ownWeight' => 1500.0,
'maxWeight' => 2200.0,
'seats' => 7,
'axles' => 2,
'numberOfBunks' => 2,
'loadCapacity' => 800.0,
'length' => 5000.0,
'videoUrl' => '"https://www.vimeo.com/459msfnkjdfhde".',
'class' => '{"type": "classes", "id": "Car"}.',
'category' => '{"type": "categories", "id": "offroad"}.',
'maker' => '{"type": "makers", "id": "bmw"}.',
'model' => '{"type": "models", "id": "x6"}.',
'parameters' => '['."\n"
.' {'."\n"
.' "type": "parameters",'."\n"
.' "id": "fuel",'."\n"
.' "values": ["hybrid_diesel"]'."\n"
.' },'."\n"
.' {'."\n"
.' "type": "parameters",'."\n"
.' "id": "airbag",'."\n"
.' "values": ["front_and_side"]'."\n"
.' }'."\n"
.']',
'features' => '{'."\n"
.' "type": "features",'."\n"
.' "ids": ['."\n"
.' "ALL_SEASON_TIRES",'."\n"
.' "CENTRAL_LOCKING",'."\n"
.' "ISOFIX"'."\n"
.' ]'."\n"
.'}',
'sellers' => '[{"type": "sellers", "id": "120"}].',
'facilities' => '[{"type": "facilities", "id": [7, 20]}].',
'location' => '{"type": "locations", "id": "5"}.',
'exchangeRule' => '{"type": "exchange-rules", "id": "5"}.',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/{adId}'
payload = {
"saleType": 1,
"title": "\"BMW M3\".",
"priceType": 1,
"description": "\"A powerful BMW M3 in excellent condition, first owner, no accidents.\"",
"showVin": true,
"variant": "\"Express Comfort\" for a Renault van.",
"plugin": true,
"capacity": 2000,
"power": 250,
"manufactureYear": 2023,
"firstRegistration": "\"06.2023\".",
"rollingKm": 45300,
"vin": "\"1FVAF3CV84DM31820\".",
"exchangeRate": 4.99,
"isImported": true,
"ownWeight": 1500,
"maxWeight": 2200,
"seats": 7,
"axles": 2,
"numberOfBunks": 2,
"loadCapacity": 800,
"length": 5000,
"videoUrl": "\"https:\/\/www.vimeo.com\/459msfnkjdfhde\".",
"class": "{\"type\": \"classes\", \"id\": \"Car\"}.",
"category": "{\"type\": \"categories\", \"id\": \"offroad\"}.",
"maker": "{\"type\": \"makers\", \"id\": \"bmw\"}.",
"model": "{\"type\": \"models\", \"id\": \"x6\"}.",
"parameters": "[\n {\n \"type\": \"parameters\",\n \"id\": \"fuel\",\n \"values\": [\"hybrid_diesel\"]\n },\n {\n \"type\": \"parameters\",\n \"id\": \"airbag\",\n \"values\": [\"front_and_side\"]\n }\n]",
"features": "{\n \"type\": \"features\",\n \"ids\": [\n \"ALL_SEASON_TIRES\",\n \"CENTRAL_LOCKING\",\n \"ISOFIX\"\n ]\n}",
"sellers": "[{\"type\": \"sellers\", \"id\": \"120\"}].",
"facilities": "[{\"type\": \"facilities\", \"id\": [7, 20]}].",
"location": "{\"type\": \"locations\", \"id\": \"5\"}.",
"exchangeRule": "{\"type\": \"exchange-rules\", \"id\": \"5\"}."
}
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
Example response (200):
{
"jsonapi": {
"version": "1.0"
},
"meta": {
"message": "Ad with id: 78313 was successfully updated."
},
"data": {
"adId": 78313
}
}
Example response (404):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The requested resource could not be found",
"meta": {
"model": "Ad",
"id": "78185555"
},
"status": "404",
"title": "Not Found"
}
]
}
Example response (422):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The is imported field must be true or false.",
"status": "422",
"title": "Validation Error"
}
]
}
Example response (500):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Missing mandatory class relationship",
"status": "500",
"title": "Internal Server Error"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete
requires authentication
Removes Ad from dealer's account.
Preconditions:
- The provided Ad
id
must be a valid integer and the Ad must exist. - The Ad must be inactive. To remove an Active (online) Ad, you have to deactivate Ad before.
Example request:
curl --request DELETE \
"https://api.plus-auto.ro/v1/ads/78350" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/78350"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/78350'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Example response (200):
{
"jsonapi": {
"version": "1.0"
},
"meta": {
"message": "The ad has been deleted."
},
"data": {}
}
Example response (400):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Invalid type for field ad. Expected integer, but received string",
"source": {
"parameter": "adId"
},
"status": "400"
}
]
}
Example response (404):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The requested resource could not be found",
"meta": {
"model": "Ad",
"id": "78185555"
},
"status": "404",
"title": "Not Found"
}
]
}
Example response (500):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Operation could not be done",
"meta": {
"reason": "Your ad expires on 2025-04-30. You can manually extend it in 16 days."
},
"status": "500",
"title": "Operation failed"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Publish
requires authentication
Publishes an Ad online by setting its status to active, enabling automatic renewal, and establishing its initial validity period by adding 30 days from the date of publication.
Important: This action is available only at the initial publication of the Ad. In order to successfully publish the Ad, all of the following conditions must be met:
- id must be an integer: The provided id parameter is validated to be an integer.
- Ad existence: The Ad with the provided id must exist.
- Dealer authorization: The authenticated dealer must have permissions to perform this action.
- Minimum photos requirement: The Ad must have at least 5 photos attached.
- Ad publishable state: The Ad must be in a state that qualifies it to be published (i.e. it must be inactive and meet all publishing conditions).
Once the Ad is published, it becomes active, visibile in the Marketplace (online) and a validity period of 30 days is applied.
Example request:
curl --request PATCH \
"https://api.plus-auto.ro/v1/ads/78350/activate" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/78350/activate"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "PATCH",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350/activate';
$response = $client->patch(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/78350/activate'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('PATCH', url, headers=headers)
response.json()
Example response (200):
{
"jsonapi": {
"version": "1.0"
},
"meta": {
"message": "The ad has been published online."
}
}
Example response (400):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Invalid type for field ad. Expected integer, but received string",
"source": {
"parameter": "adId"
},
"status": "400"
}
]
}
Example response (404):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The requested resource could not be found",
"meta": {
"model": "Ad",
"id": "78185555"
},
"status": "404",
"title": "Not Found"
}
]
}
Example response (500):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Operation could not be done",
"meta": {
"reason": "Ad cannot be published because not all required conditions are met: permission is granted and ad status is active. Please verify that you meet these requirements."
},
"status": "500",
"title": "Operation failed"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Deactivate
requires authentication
Deactivates an active Ad by changing its status to inactive.
When to Use: Use this endpoint to manually deactivate an Ad that is currently active.
Preconditions: Ad can be deactivated if:
- The provided
id
is a valid integer. - The Ad exists.
- The authenticated dealer is authorized to perform this action.
- The Ad is currently active and editable.
Upon success, the Ad's status is updated to inactive, is removed from the Marketplace, and the Ad seller is notified.
Example request:
curl --request PATCH \
"https://api.plus-auto.ro/v1/ads/78350/deactivate" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/78350/deactivate"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "PATCH",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350/deactivate';
$response = $client->patch(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/78350/deactivate'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('PATCH', url, headers=headers)
response.json()
Example response (200):
{
"jsonapi": {
"version": "1.0"
},
"meta": {
"message": "The ad has been deactivated (removed from Marketplace)."
}
}
Example response (400):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Invalid type for field ad. Expected integer, but received string",
"source": {
"parameter": "adId"
},
"status": "400"
}
]
}
Example response (404):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The requested resource could not be found",
"meta": {
"model": "Ad",
"id": "78185555"
},
"status": "404",
"title": "Not Found"
}
]
}
Example response (500):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Operation could not be done",
"meta": {
"reason": "Ad cannot be deactivated because not all required conditions are met: edit permission is granted and ad status is inactive. Please verify that you meet these requirements."
},
"status": "500",
"title": "Operation failed"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Republish
requires authentication
Republish an Ad that was previously published online and it's currently deactivated.
Behavior: Republishing can be done in one of these cases:
- The Ad has been manyally deactivated in the validity period. In this case republish keeps Ad validity and do no use dealer's credits.
- The Ad expired and has been automatically deactivated. In this case republish set publication date to current date and the expiration date is set to current date + 30 days and use dealer's credits.
The endpoint will republish the Ad by setting its status to Active (online in Marketplace).
When to Use: An Ad is eligible for republishing if:
- It was previously active.
- It is currently inactive.
Additional Checks: The endpoint also verifies that:
- The provided
id
is a valid integer. - The specified Ad exists.
- The authenticated dealer is authorized to perform the republish action.
- The Ad has at least 5 photos.
Example request:
curl --request PATCH \
"https://api.plus-auto.ro/v1/ads/78350/republish" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/78350/republish"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "PATCH",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350/republish';
$response = $client->patch(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/78350/republish'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('PATCH', url, headers=headers)
response.json()
Example response (200):
{
"jsonapi": {
"version": "1.0"
},
"meta": {
"message": "The ad has been republished online."
}
}
Example response (400):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Invalid type for field ad. Expected integer, but received string",
"source": {
"parameter": "adId"
},
"status": "400"
}
]
}
Example response (404):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The requested resource could not be found",
"meta": {
"model": "Ad",
"id": "78185555"
},
"status": "404",
"title": "Not Found"
}
]
}
Example response (500):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Operation could not be done",
"meta": {
"reason": "Ad cannot be republished because not all required conditions are met: status is active, the expiration date is 2025-05-12. Please verify that you meet all these conditions."
},
"status": "500",
"title": "Operation failed"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Extend
requires authentication
Extends Ad validity period by adding 30 days to its current expiration date. Note: This action will deduct credits from the dealer's subscription.
This endpoint performs the following checks before allowing a manual Ad validity period extension:
- Validates that the provided
id
is an integer. - Checks that the specified Ad exists.
- Authorizes the authenticated dealer to update the Ad.
- Verifies if the Ad is not set for automatic renewal.
Manual Extension Eligibility: The Ad can be manually extended if:
- The Ad is active.
- An expiration date is set.
- The number of days until expiration is less or equal to 3.
- Automatic renewal is not enabled.
Example request:
curl --request PATCH \
"https://api.plus-auto.ro/v1/ads/78350/extend" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/78350/extend"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "PATCH",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350/extend';
$response = $client->patch(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/78350/extend'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('PATCH', url, headers=headers)
response.json()
Example response (200):
{
"jsonapi": {
"version": "1.0"
},
"meta": {
"message": "The ad validity has been extended by 30 days."
}
}
Example response (400):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Invalid type for field ad. Expected integer, but received string",
"source": {
"parameter": "adId"
},
"status": "400"
}
]
}
Example response (404):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The requested resource could not be found",
"meta": {
"model": "Ad",
"id": "78185555"
},
"status": "404",
"title": "Not Found"
}
]
}
Example response (500):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Operation could not be done",
"meta": {
"reason": "Your ad expires on 2025-04-30. You can manually extend it in 16 days."
},
"status": "500",
"title": "Operation failed"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Stop AutoRenewal
requires authentication
Stops the automatic Ad renewal so that its validity will no longer be extended automatically.
When to Use: Use this endpoint to disable automatic renewal for an active Ad. This action is useful when the dealer needs to manually manage the Ad’s validity period and visibility in the Marketplace, rather than leaving it to be automatically renewed.
Pre-conditions: The following conditions must be met for the operation to succeed:
- The provided
id
must be a valid integer. - The Ad must exists.
- The authenticated dealer must be authorized to perform this operation.
Automatic Renewal Eligibility: The Ad can only be auto-extended if:
- The Ad is active.
- The number of days until expiration less than 3.
- Automatic renewal is currently enabled.
If the Ad is already set for not automatic renewal, the operation will fail.
Upon success, the automatic renewal flag is set to false.
Example request:
curl --request PATCH \
"https://api.plus-auto.ro/v1/ads/78350/stop-autorenewal" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/78350/stop-autorenewal"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "PATCH",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350/stop-autorenewal';
$response = $client->patch(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/78350/stop-autorenewal'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('PATCH', url, headers=headers)
response.json()
Example response (200):
{
"jsonapi": {
"version": "1.0"
},
"meta": {
"message": "Automatic renewal has been stopped. You can now extend the ad validity by using the route for extend ad, which becomes available 3 days before expiration."
}
}
Example response (400):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Invalid type for field ad. Expected integer, but received string",
"source": {
"parameter": "adId"
},
"status": "400"
}
]
}
Example response (404):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The requested resource could not be found",
"meta": {
"model": "Ad",
"id": "78185555"
},
"status": "404",
"title": "Not Found"
}
]
}
Example response (500):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "Operation could not be done",
"meta": {
"reason": "Automatic renewal is already disabled for this ad."
},
"status": "500",
"title": "Operation failed"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Ads Images
Show Ad Images
requires authentication
Returns list of images associated with an Ad. Images are sorted in the order provided/edited by the Dealer.
Preconditions:
- The provided
adId
must be a valid integer. - The specified Ad must exist.
- The authenticated dealer owns the Ad.
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/ads/74908/images" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/74908/images"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/74908/images';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/74908/images'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"jsonapi": {
"version": "1.0"
},
"data": [
{
"type": "images",
"id": "1588821",
"attributes": {
"source_id": "IMG001",
"displayorder": 1,
"url": "https://plus-auto-test.fra1.cdn.digitaloceanspaces.com/vehicles_images/82956/82956-1588821.webp"
}
},
{
"type": "images",
"id": "1588822",
"attributes": {
"source_id": "IMG002",
"displayorder": 2,
"url": "https://plus-auto-test.fra1.cdn.digitaloceanspaces.com/vehicles_images/82956/82956-1588822.webp"
}
},
{
"type": "images",
"id": "1588823",
"attributes": {
"source_id": "IMG003",
"displayorder": 3,
"url": "https://plus-auto-test.fra1.cdn.digitaloceanspaces.com/vehicles_images/82956/82956-1588823.webp"
}
}
]
}
Example response (404):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The requested resource could not be found",
"meta": {
"model": "Ad",
"id": "78185555"
},
"status": "404",
"title": "Not Found"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Upload Ad Image
requires authentication
Uploads an image to the specified Ad. This endpoint validates the incoming image file according to the following rules:
- The file is required and must be a valid image.
- The image must be in one of the allowed formats: jpeg, png, or webp.
- The maximum file size is 8192 KB (8MB).
- The image dimensions must be at least 360 pixels (width) and 270 pixels (height).
- The total number of uploaded images is not bigger than 40.
Preconditions:
- The provided
adId
must be a valid integer and refers to an existing Ad. - The dealer owns the Ad.
- The total number of images for the vehicle must not exceed the configured maximum.
Example request:
curl --request POST \
"https://api.plus-auto.ro/v1/ads/579084/images/upload" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json" \
--data "{
\"image\": \"Alfa Romeo Tonale 4.jpg\",
\"source_id\": \"IMG20495\"
}"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/579084/images/upload"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
let body = {
"image": "Alfa Romeo Tonale 4.jpg",
"source_id": "IMG20495"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/579084/images/upload';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
'json' => [
'image' => 'Alfa Romeo Tonale 4.jpg',
'source_id' => 'IMG20495',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/579084/images/upload'
payload = {
"image": "Alfa Romeo Tonale 4.jpg",
"source_id": "IMG20495"
}
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (201):
{
"jsonapi": {
"version": "1.0"
},
"meta": {
"message": "The image has been uploaded for the ad with id 1234."
}
}
Example response (404):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The requested resource could not be found",
"meta": {
"model": "Ad",
"id": "78185555"
},
"status": "404",
"title": "Not Found"
}
]
}
Example response (422):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The image field is required and must be a valid image (jpeg, png, or webp) with a maximum size of 8192 KB and minimum dimensions of 360x270 pixels.",
"status": "422",
"title": "Validation Error"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Order Ad Images
requires authentication
Order Ad's images based on the supplied list of image IDs.
The request must include an array of image IDs that exactly matches the list of Ad images and are sent in the desired order.
If the number of images or the lists do not match, an error will be thrown.
Example: {"imageids": [1588006, 1588007, 1588008, 1588009, 1588010, 1588011, 1588012, 1588013, 1588014]}
Preconditions:
- The provided
adId
must be a valid integer and refer to an existing Ad. - The dealer must own the Ad.
- The supplied
imageids
field must be an array of integers that exactly matches the current list of Ad image IDs.
Example request:
curl --request PATCH \
"https://api.plus-auto.ro/v1/ads/25657/images/order" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/25657/images/order"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "PATCH",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/25657/images/order';
$response = $client->patch(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/25657/images/order'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('PATCH', url, headers=headers)
response.json()
Example response (200):
{
"jsonapi": {
"version": "1.0"
},
"meta": {
"message": "The ad images have been successfully ordered."
}
}
Example response (422):
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The provided image IDs do not match the database image IDs.",
"status": "422",
"title": "Validation Error"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Ad Image
requires authentication
Deletes an Ad image and reorders the remaining images.
Preconditions:
- The provided
adId
must be a valid integer referring an existing Ad. - The provided
imageId
must be a valid integer referring a image associated with the Ad. - The dealer must own the Ad.
Example request:
curl --request DELETE \
"https://api.plus-auto.ro/v1/ads/69034/images/56780/delete" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/ads/69034/images/56780/delete"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/69034/images/56780/delete';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/ads/69034/images/56780/delete'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Example response (200):
{
"jsonapi": {
"version": "1.0"
},
"meta": {
"message": "The ad image has been successfully deleted."
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Dealer
Locations
requires authentication
Returns list of dealer's locations.
Dealers must configure in the Plus-Auto web interface the list of selling locations. This endpoint returns a paginated list of pre-defined dealer's locations.
Optional Query Parameters:
- page[size] (int, optional): The number of dealer's locations to return per page.
Example: 7 - page[number] (int, optional): The page number to retrieve.
Example: 3
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/dealer/locations" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/dealer/locations"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/dealer/locations';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/dealer/locations'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 1,
"perPage": 10,
"to": 10,
"total": 10
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/dealer/locations?page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/dealer/locations?page%5Bnumber%5D=1&page%5Bsize%5D=10"
},
"data": [
{
"type": "locations",
"id": 5,
"attributes": {
"name": "București",
"address": "Str. Mihai Eminescu 10",
"latitude": "44.4328",
"longitude": "26.1025",
"country_code": "RO",
"region_code": "B",
"locality": "Sector 1"
}
},
{
"type": "locations",
"id": 6,
"attributes": {
"name": "Cluj-Napoca",
"address": "Str. Avram Iancu 23",
"latitude": "46.7712",
"longitude": "23.6236",
"country_code": "RO",
"region_code": "CJ",
"locality": "Cluj-Napoca"
}
},
{
"type": "locations",
"id": 7,
"attributes": {
"name": "Timișoara",
"address": "Bulevardul Libertății 45",
"latitude": "45.7489",
"longitude": "21.2087",
"country_code": "RO",
"region_code": "TM",
"locality": "Timișoara"
}
},
{
"type": "locations",
"id": 8,
"attributes": {
"name": "Constanța",
"address": "Str. Marin Iancu 5",
"latitude": "44.1598",
"longitude": "28.6348",
"country_code": "RO",
"region_code": "CT",
"locality": "Constanța"
}
},
{
"type": "locations",
"id": 9,
"attributes": {
"name": "Iași",
"address": "Str. Copou 15",
"latitude": "47.1585",
"longitude": "27.6014",
"country_code": "RO",
"region_code": "IS",
"locality": "Iași"
}
},
{
"type": "locations",
"id": 10,
"attributes": {
"name": "Brașov",
"address": "Bulevardul Eroilor 30",
"latitude": "45.6579",
"longitude": "25.6012",
"country_code": "RO",
"region_code": "BV",
"locality": "Brașov"
}
},
{
"type": "locations",
"id": 11,
"attributes": {
"name": "Sibiu",
"address": "Str. Nicolae Bălcescu 12",
"latitude": "45.7924",
"longitude": "24.1515",
"country_code": "RO",
"region_code": "SB",
"locality": "Sibiu"
}
},
{
"type": "locations",
"id": 12,
"attributes": {
"name": "Oradea",
"address": "Str. Libertății 8",
"latitude": "47.0725",
"longitude": "21.9211",
"country_code": "RO",
"region_code": "BH",
"locality": "Oradea"
}
},
{
"type": "locations",
"id": 15,
"attributes": {
"name": "Arad",
"address": "Calea Unirii 6",
"latitude": "46.1660",
"longitude": "21.3123",
"country_code": "RO",
"region_code": "AR",
"locality": "Arad"
}
},
{
"type": "locations",
"id": 41,
"attributes": {
"name": "Ploiești",
"address": "Str. Unirii 18",
"latitude": "44.9360",
"longitude": "26.0360",
"country_code": "RO",
"region_code": "PL",
"locality": "Ploiești"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Facilities
requires authentication
Returns list of dealer's facilities.
Dealers can optionally configure in the Plus-Auto web interface a set of facilities to be used alongside with their Ads. This endpoint returns a paginated list of defined dealer facilities.
Optional Query Parameters:
- page[size] (int, optional): The number of dealer's facilities to return per page.
Example: 12 - page[number] (int, optional): The page number to retrieve.
Example: 2
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/dealer/facilities" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/dealer/facilities"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/dealer/facilities';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/dealer/facilities'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 1,
"perPage": 10,
"to": 4,
"total": 4
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/dealer/facilities?page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/dealer/facilities?page%5Bnumber%5D=1&page%5Bsize%5D=10"
},
"data": [
{
"type": "facilities",
"id": 2,
"attributes": {
"name": "Istoric Verificat",
"isActive": true
}
},
{
"type": "facilities",
"id": 27,
"attributes": {
"name": "Garanție 1 an",
"isActive": true
}
},
{
"type": "facilities",
"id": 29,
"attributes": {
"name": "Garanție 2 an - dezactivat",
"isActive": false
}
},
{
"type": "facilities",
"id": 31,
"attributes": {
"name": "Numere noi",
"isActive": true
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Sellers
requires authentication
Display list of dealer's sellers.
Dealers must configure in the Plus-Auto web interface the list of sellers to be used within published Ads. This endpoint returns paginated list of dealer's sellers.
Optional Query Parameters:
- page[size] (int, optional): The number of dealer's sellers to return per page.
Example: 10 - page[number] (int, optional): The page number to retrieve.
Example: 1
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/dealer/sellers" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/dealer/sellers"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/dealer/sellers';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/dealer/sellers'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 11,
"perPage": 10,
"to": 10,
"total": 102
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/dealer/sellers?page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/dealer/sellers?page%5Bnumber%5D=11&page%5Bsize%5D=10",
"next": "http://api.plus-auto.ro/v1/dealer/sellers?page%5Bnumber%5D=2&page%5Bsize%5D=10"
},
"data": [
{
"type": "sellers",
"id": "cristina-popescu",
"attributes": {
"name": "CRISTINA POPESCU",
"email": "cristina.popescu@example.ro",
"phone": "40712345678",
"isActive": true
}
},
{
"type": "sellers",
"id": "mihai-ionescu",
"attributes": {
"name": "MIHAI IONESCU",
"email": "mihai.ionescu@example.ro",
"phone": "40798765432",
"isActive": false
}
},
{
"type": "sellers",
"id": "ana-georgescu",
"attributes": {
"name": "ANA GEORGESCU",
"email": "ana.georgescu@example.ro",
"phone": "40711122233",
"isActive": false
}
},
{
"type": "sellers",
"id": "andrei-dumitrescu",
"attributes": {
"name": "ANDREI DUMITRESCU",
"email": "andrei.dumitrescu@example.ro",
"phone": "40744455666",
"isActive": false
}
},
{
"type": "sellers",
"id": "elena-marin",
"attributes": {
"name": "ELENA MARIN",
"email": "elena.marin@example.ro",
"phone": "40755566778",
"isActive": true
}
},
{
"type": "sellers",
"id": "dragos-petrescu",
"attributes": {
"name": "DRAGOS PETRESCU",
"email": "dragos.petrescu@example.ro",
"phone": "40766677889",
"isActive": false
}
},
{
"type": "sellers",
"id": "ioana-constantin",
"attributes": {
"name": "IOANA CONSTANTIN",
"email": "ioana.constantin@example.ro",
"phone": "40777788990",
"isActive": false
}
},
{
"type": "sellers",
"id": "david-stoica",
"attributes": {
"name": "DAVID STOICA",
"email": "david.stoica@example.ro",
"phone": "40788899001",
"isActive": true
}
},
{
"type": "sellers",
"id": "ramona-olteanu",
"attributes": {
"name": "RAMONA OLTEANU",
"email": "ramona.olteanu@example.ro",
"phone": "40799900112",
"isActive": false
}
},
{
"type": "sellers",
"id": "ion-tudor",
"attributes": {
"name": "ION TUDOR",
"email": "ion.tudor@example.ro",
"phone": "40700011223",
"isActive": true
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Nomenclatures
Classes
requires authentication
Returns list of vehicle classes.
This endpoint returns a paginated list of vehicle classes. The response is localized based on the requested language, default in Romanian.
Note: Vehicle class is a mandatory parameter for all operations with Ads.
Query Parameters:
- page[size] (integer, optional): The number of vehicle classes to return per page.
Example: 15 - page[number] (int, optional): The page number to retrieve.
Example: 2
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/vehicle/classes" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/vehicle/classes"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/vehicle/classes'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 2,
"perPage": 10,
"to": 10,
"total": 13
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/vehicle/classes?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/vehicle/classes?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10",
"next": "http://api.plus-auto.ro/v1/vehicle/classes?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
},
"data": [
{
"type": "classes",
"id": "bus",
"attributes": {
"name": "Autobuze"
}
},
{
"type": "classes",
"id": "car",
"attributes": {
"name": "Autoturisme"
}
},
{
"type": "classes",
"id": "vanupto7500",
"attributes": {
"name": "Autoutilitare"
}
},
{
"type": "classes",
"id": "semitrailertruck",
"attributes": {
"name": "Camioane"
}
},
{
"type": "classes",
"id": "truckover7500",
"attributes": {
"name": "Camioane peste 7,5t"
}
},
{
"type": "classes",
"id": "ebike",
"attributes": {
"name": "E-Bike"
}
},
{
"type": "classes",
"id": "motorbike",
"attributes": {
"name": "Motociclete"
}
},
{
"type": "classes",
"id": "trailer",
"attributes": {
"name": "Remorci"
}
},
{
"type": "classes",
"id": "motorhome",
"attributes": {
"name": "Rulote"
}
},
{
"type": "classes",
"id": "semitrailer",
"attributes": {
"name": "Semiremorci"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Categories
requires authentication
Returns list of vehicle categories for a specific vehicle class.
This endpoint returns a paginated list of categories corresponding to the specified vehicle class. The response is localized based on the requested language, default in Romanian.
URL Parameter:
- classId (string, required): The id of the vehicle class. Example: "Car".
Query Parameters:
- page[size] (integer, optional): The number of vehicle categories to return per page.
Example: 25 - page[number] (int, optional): The page number to retrieve.
Example: 1
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/vehicle/classes/Car/categories?page%5Bsize%5D=25" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/vehicle/classes/Car/categories"
);
const params = {
"page[size]": "25",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/categories';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
'query' => [
'page[size]' => '25',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/categories'
params = {
'page[size]': '25',
}
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 3,
"perPage": 10,
"to": 10,
"total": 21
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/vehicle/classes/motorbike/categories?page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/vehicle/classes/motorbike/categories?page%5Bnumber%5D=3&page%5Bsize%5D=10",
"next": "http://api.plus-auto.ro/v1/vehicle/classes/motorbike/categories?page%5Bnumber%5D=2&page%5Bsize%5D=10"
},
"data": [
{
"type": "categories",
"id": "motorassistedbicycleandsmallmoped",
"attributes": {
"name": "Bicicletă cu motor/Motoretă"
}
},
{
"type": "categories",
"id": "chopperandcruiser",
"attributes": {
"name": "Chopper / cruiser"
}
},
{
"type": "categories",
"id": "racing",
"attributes": {
"name": "Cursă"
}
},
{
"type": "categories",
"id": "enduroandtouringenduro",
"attributes": {
"name": "Enduro / touring-enduro"
}
},
{
"type": "categories",
"id": "pocketbike",
"attributes": {
"name": "Minimotoretă"
}
},
{
"type": "categories",
"id": "motorcycle",
"attributes": {
"name": "Motocicletă"
}
},
{
"type": "categories",
"id": "combinationandsidecar",
"attributes": {
"name": "Motocicletă cu ataş"
}
},
{
"type": "categories",
"id": "nakedbike",
"attributes": {
"name": "Motocicletă necarenată"
}
},
{
"type": "categories",
"id": "trike",
"attributes": {
"name": "Motocicletă pe 3 roţi"
}
},
{
"type": "categories",
"id": "dirtbike",
"attributes": {
"name": "Motocicletă pentru curse pe noroi"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Makers
requires authentication
Returns list of vehicle makers for a specific vehicle class.
This endpoint returns a paginated list of vehicle makers (manufacturers/brands) associated with a given vehicle class.
For example, for a "Car" vehicle class, you might see makers such as "Mercedes-Benz", "Toyota" or "Audi".
The vehicle class is identified by the route parameter classId
.
URL Parameter:
- classId (string, required): The id of the vehicle class.
Example: Car
Query Parameters:
- page[size] (integer, optional): The number of vehicle makers to return per page.
Example: 18 - page[number] (int, optional): The page number to retrieve.
Example: 2
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/vehicle/classes/Car/makers" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/vehicle/classes/Car/makers"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/makers';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/makers'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 17,
"perPage": 10,
"to": 10,
"total": 169
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers?language=ro&page%5Bnumber%5D=17&page%5Bsize%5D=10",
"next": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
},
"data": [
{
"type": "makers",
"id": "abarth",
"attributes": {
"name": "Abarth"
}
},
{
"type": "makers",
"id": "ac",
"attributes": {
"name": "AC"
}
},
{
"type": "makers",
"id": "acura",
"attributes": {
"name": "Acura"
}
},
{
"type": "makers",
"id": "aiways",
"attributes": {
"name": "Aiways"
}
},
{
"type": "makers",
"id": "aixam",
"attributes": {
"name": "Aixam"
}
},
{
"type": "makers",
"id": "alfa_romeo",
"attributes": {
"name": "Alfa Romeo"
}
},
{
"type": "makers",
"id": "alpina",
"attributes": {
"name": "ALPINA"
}
},
{
"type": "makers",
"id": "alpine",
"attributes": {
"name": "Alpine"
}
},
{
"type": "makers",
"id": "alvis",
"attributes": {
"name": "Alvis"
}
},
{
"type": "makers",
"id": "ariel",
"attributes": {
"name": "Ariel"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Parameters
requires authentication
Returns list of vehicle parameters for a specific vehicle class.
This endpoint returns a paginated list of parameters associated with the specified vehicle class. Each parameter object includes an "id" and an "attributes" object with:
- responseType: A string specifying if the parameter has "singleValue" or "multipleValues".
- mandatory: A boolean indicating if the parameter is required.
For example, a parameter like "condition" might be marked as mandatory and expect a single value, while a parameter such as "parking-assistants" may allow multiple values.
URL Parameter:
- classId (string, required): The id of the vehicle class.
Example: Car
Query Parameters:
- page[size] (integer, optional): The number of vehicle parameters per page.
Example: 25 - page[number] (int, optional): The page number to retrieve.
Example: 2
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 2,
"perPage": 10,
"to": 10,
"total": 13
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/vehicle/classes/Car/parameters?page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/vehicle/classes/Car/parameters?page%5Bnumber%5D=2&page%5Bsize%5D=10",
"next": "http://api.plus-auto.ro/v1/vehicle/classes/Car/parameters?page%5Bnumber%5D=2&page%5Bsize%5D=10"
},
"data": [
{
"type": "parameters",
"id": "condition",
"attributes": {
"name": "Condiție",
"responseType": "singleValue",
"mandatory": true
}
},
{
"type": "parameters",
"id": "door-count",
"attributes": {
"name": "Număr uși",
"responseType": "singleValue",
"mandatory": false
}
},
{
"type": "parameters",
"id": "trailer-coupling-type",
"attributes": {
"name": "Mod cuplare remorcă",
"responseType": "singleValue",
"mandatory": false
}
},
{
"type": "parameters",
"id": "speed-control",
"attributes": {
"name": "Pilot automat",
"responseType": "singleValue",
"mandatory": false
}
},
{
"type": "parameters",
"id": "parking-assistants",
"attributes": {
"name": "Asistent parcare",
"responseType": "multipleValues",
"mandatory": false
}
},
{
"type": "parameters",
"id": "interior-type",
"attributes": {
"name": "Material interior",
"responseType": "multipleValues",
"mandatory": true
}
},
{
"type": "parameters",
"id": "airbag",
"attributes": {
"name": "Airbag-uri",
"responseType": "multipleValues",
"mandatory": false
}
},
{
"type": "parameters",
"id": "emission-class",
"attributes": {
"name": "Clasă de emisii",
"responseType": "singleValue",
"mandatory": false
}
},
{
"type": "parameters",
"id": "interior-color",
"attributes": {
"name": "Culoare interior",
"responseType": "singleValue",
"mandatory": true
}
},
{
"type": "parameters",
"id": "climatisation",
"attributes": {
"name": "Sistem climatizare",
"responseType": "singleValue",
"mandatory": false
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Features
requires authentication
Returns list of features for a specific vehicle class.
This endpoint returns a filtered and paginated list of features that are available for the given vehicle class. For instance, a "Car" might include features such as ABS, AIR_SUSPENSION, or BLUETOOTH, while a "Motorbike" might have features such as KICKSTARTER, WINDSHIELD or CATALYTIC_CONVERTER.
URL Parameters:
- classId (string, required): The id of the vehicle class.
Example: Car
Query Parameters:
- page[size] (integer, optional): The number of vehicle features to return per page.
Example: 17 - page[number] (int, optional): The page number to retrieve.
Example: 3
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/vehicle/classes/Car/features" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/vehicle/classes/Car/features"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/features';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/features'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 10,
"perPage": 10,
"to": 10,
"total": 95
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/vehicle/classes/Car/features?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/vehicle/classes/Car/features?language=ro&page%5Bnumber%5D=10&page%5Bsize%5D=10",
"next": "http://api.plus-auto.ro/v1/vehicle/classes/Car/features?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
},
"data": [
{
"type": "features",
"id": "ABS",
"attributes": {
"name": "ABS"
}
},
{
"type": "features",
"id": "ANDROID_AUTO",
"attributes": {
"name": "Android Auto"
}
},
{
"type": "features",
"id": "ALL_SEASON_TIRES",
"attributes": {
"name": "Anvelope All season"
}
},
{
"type": "features",
"id": "WINTER_TIRES",
"attributes": {
"name": "Anvelope de iarnă"
}
},
{
"type": "features",
"id": "SUMMER_TIRES",
"attributes": {
"name": "Anvelope de vară"
}
},
{
"type": "features",
"id": "EMERGENCY_CALL_SYSTEM",
"attributes": {
"name": "Apelare automată în caz de urgență"
}
},
{
"type": "features",
"id": "CARPLAY",
"attributes": {
"name": "Apple CarPlay"
}
},
{
"type": "features",
"id": "HILL_START_ASSIST",
"attributes": {
"name": "Asistență la pornirea din rampă"
}
},
{
"type": "features",
"id": "HIGH_BEAM_ASSIST",
"attributes": {
"name": "Asistență pentru faza lungă"
}
},
{
"type": "features",
"id": "LANE_DEPARTURE_WARNING",
"attributes": {
"name": "Asistență schimbare bandă"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Models
requires authentication
Returns list of vehicle models for a specific maker within a given vehicle class.
This endpoint returns a paginated list of vehicle models. For example, if the maker is "Audi", you might
see models such as "A4" or "SQ8". The vehicle class is identified by the classId
route parameter,
and the maker by the makerId
route parameter.
URL Parameters:
- classId (string, required): The id of the vehicle class.
Example: Car - makerId (string, required): The id of the vehicle maker.
Example: Audi
Query Parameters:
- page[size] (integer, optional): The number of vehicle models to return per page.
Example: 18 - page[number] (int, optional): The page number to retrieve.
Example: 2
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Audi/models" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Audi/models"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Audi/models';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Audi/models'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 2,
"perPage": 10,
"to": 10,
"total": 13
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Abarth/models?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Abarth/models?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10",
"next": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Abarth/models?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
},
"data": [
{
"type": "models",
"id": "124_spider",
"attributes": {
"name": "124 Spider"
}
},
{
"type": "models",
"id": "500",
"attributes": {
"name": "500"
}
},
{
"type": "models",
"id": "500c",
"attributes": {
"name": "500C"
}
},
{
"type": "models",
"id": "595",
"attributes": {
"name": "595"
}
},
{
"type": "models",
"id": "595_competizione",
"attributes": {
"name": "595 Competizione"
}
},
{
"type": "models",
"id": "595_turismo",
"attributes": {
"name": "595 Turismo"
}
},
{
"type": "models",
"id": "595c",
"attributes": {
"name": "595C"
}
},
{
"type": "models",
"id": "600e",
"attributes": {
"name": "600e"
}
},
{
"type": "models",
"id": "695",
"attributes": {
"name": "695"
}
},
{
"type": "models",
"id": "695c",
"attributes": {
"name": "695C"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Parameter Values
requires authentication
Returns list of possible values for a specific vehicle parameter.
This endpoint returns a paginated list of parameter values for the specified vehicle parameter
within the context of a given vehicle class. For example, if the parameter is "airbag", the response
might include entries like FRONT_AND_SIDE_AIRBAGS
or DRIVER_AIRBAG
. If the parameter relates
to exterior color, then a single value is expected, possible values could be BLACK
, GREY
, or RED
.
Each result includes:
- id: The id of the parameter value (e.g.,
new
). - name: The name of the parameter value (e.g.,
Vehicul nou
). - parameterId: The id of the related parameter (e.g.,
condition
).
URL Parameters:
- classId (string, required): The id of the vehicle class.
Example: Car - parameterId (string, required): The if of the parameter.
Example: condition
Query Parameters:
- page[size] (integer, optional): The number of vehicle parameter values to return per page.
Example: 25 - page[number] (int, optional): The page number to retrieve.
Example: 2
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/airbag/parameter-values" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/airbag/parameter-values"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/airbag/parameter-values';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/airbag/parameter-values'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 1,
"perPage": 10,
"to": 10,
"total": 10
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/fuel/parameter-values?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/fuel/parameter-values?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10"
},
"data": [
{
"type": "parameter-values",
"id": "petrol",
"attributes": {
"name": "Benzină",
"parameterId": "fuel"
}
},
{
"type": "parameter-values",
"id": "diesel",
"attributes": {
"name": "Diesel",
"parameterId": "fuel"
}
},
{
"type": "parameter-values",
"id": "lpg",
"attributes": {
"name": "GPL",
"parameterId": "fuel"
}
},
{
"type": "parameter-values",
"id": "cng",
"attributes": {
"name": "Gaz petrolier compresat",
"parameterId": "fuel"
}
},
{
"type": "parameter-values",
"id": "electricity",
"attributes": {
"name": "Electric",
"parameterId": "fuel"
}
},
{
"type": "parameter-values",
"id": "hybrid",
"attributes": {
"name": "Hibrid (B/E)",
"parameterId": "fuel"
}
},
{
"type": "parameter-values",
"id": "hydrogenium",
"attributes": {
"name": "Hidrogen",
"parameterId": "fuel"
}
},
{
"type": "parameter-values",
"id": "ethanol",
"attributes": {
"name": "Etanol (FFV, E85 etc.)",
"parameterId": "fuel"
}
},
{
"type": "parameter-values",
"id": "hybrid_diesel",
"attributes": {
"name": "Hibrid (D/E)",
"parameterId": "fuel"
}
},
{
"type": "parameter-values",
"id": "other",
"attributes": {
"name": "Altele",
"parameterId": "fuel"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Countries
requires authentication
Returns list of Countries defined within the Plus-Auto Marketplace.
Response Fields:
data
: List of country objects.id
: The id of the country.name
: The name of the country.
Query Parameters:
- page[size] (integer, optional): The number of countries to return per page.
Example: 25 - page[number] (int, optional): The page number to retrieve.
Example: 2
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/countries" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/countries"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/countries';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/countries'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 25,
"perPage": 10,
"to": 10,
"total": 249
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/countries?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/countries?language=ro&page%5Bnumber%5D=25&page%5Bsize%5D=10",
"next": "http://api.plus-auto.ro/v1/countries?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
},
"data": [
{
"type": "countries",
"id": 1,
"attributes": {
"name": "Afganistan"
}
},
{
"type": "countries",
"id": 206,
"attributes": {
"name": "Africa de Sud"
}
},
{
"type": "countries",
"id": 2,
"attributes": {
"name": "Albania"
}
},
{
"type": "countries",
"id": 3,
"attributes": {
"name": "Algeria"
}
},
{
"type": "countries",
"id": 5,
"attributes": {
"name": "Andorra"
}
},
{
"type": "countries",
"id": 6,
"attributes": {
"name": "Angola"
}
},
{
"type": "countries",
"id": 7,
"attributes": {
"name": "Anguilla"
}
},
{
"type": "countries",
"id": 8,
"attributes": {
"name": "Antarctica"
}
},
{
"type": "countries",
"id": 9,
"attributes": {
"name": "Antigua și Barbuda"
}
},
{
"type": "countries",
"id": 195,
"attributes": {
"name": "Arabia Saudită"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Regions
requires authentication
Returns list of regions/counties for a given country.
This endpoint returns a paginated list of regions/counties for a specific country.
The country is identified by the countryId
URL parameter.
URL Parameter:
- countryId (integer, required): The id of the country.
Example: 181 -> for Romania
Query Parameters:
- page[size] (integer, optional): The number of regions to return per page.
Example: 25 - page[number] (int, optional): The page number to retrieve.
Example: 2
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/countries/181/regions" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/countries/181/regions"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/countries/181/regions';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/countries/181/regions'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 5,
"perPage": 10,
"to": 10,
"total": 42
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/countries/181/regions?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/countries/181/regions?language=ro&page%5Bnumber%5D=5&page%5Bsize%5D=10",
"next": "http://api.plus-auto.ro/v1/countries/181/regions?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
},
"data": [
{
"type": "regions",
"id": 1,
"attributes": {
"name": "Alba"
}
},
{
"type": "regions",
"id": 2,
"attributes": {
"name": "Arad"
}
},
{
"type": "regions",
"id": 3,
"attributes": {
"name": "Argeş"
}
},
{
"type": "regions",
"id": 4,
"attributes": {
"name": "Bacău"
}
},
{
"type": "regions",
"id": 5,
"attributes": {
"name": "Bihor"
}
},
{
"type": "regions",
"id": 6,
"attributes": {
"name": "Bistriţa Năsăud"
}
},
{
"type": "regions",
"id": 7,
"attributes": {
"name": "Botoşani"
}
},
{
"type": "regions",
"id": 8,
"attributes": {
"name": "Brăila"
}
},
{
"type": "regions",
"id": 9,
"attributes": {
"name": "Braşov"
}
},
{
"type": "regions",
"id": 42,
"attributes": {
"name": "București"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Localities
requires authentication
Returns list of localities for a given country and region.
This endpoint returns a paginated list of localities for a given country and region.
The country is identified by the countryId
URL parameter and the region by the regionId
URL parameter.
URL Parameters:
- countryId (integer, required): The id of the country.
Example: 181 -> for Romania - regionId (integer, required): The id of the region.
Example: 1 -> for Alba
Query Parameters:
- page[size] (integer, optional): The number of localities to return per page.
Example: 14 - page[number] (int, optional): The page number to retrieve.
Example: 5
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/countries/181/regions/1/localities" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/countries/181/regions/1/localities"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/countries/181/regions/1/localities';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/countries/181/regions/1/localities'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 52,
"perPage": 10,
"to": 10,
"total": 511
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/countries/181/regions/4/localities?page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/countries/181/regions/4/localities?page%5Bnumber%5D=52&page%5Bsize%5D=10",
"next": "http://api.plus-auto.ro/v1/countries/181/regions/4/localities?page%5Bnumber%5D=2&page%5Bsize%5D=10"
},
"data": [
{
"type": "localities",
"id": 1599,
"attributes": {
"name": "Agăş"
}
},
{
"type": "localities",
"id": 1600,
"attributes": {
"name": "Albele"
}
},
{
"type": "localities",
"id": 1601,
"attributes": {
"name": "Antoheşti"
}
},
{
"type": "localities",
"id": 1602,
"attributes": {
"name": "Apa Asău"
}
},
{
"type": "localities",
"id": 1603,
"attributes": {
"name": "Ardeoani"
}
},
{
"type": "localities",
"id": 1604,
"attributes": {
"name": "Arini"
}
},
{
"type": "localities",
"id": 1605,
"attributes": {
"name": "Asău"
}
},
{
"type": "localities",
"id": 1606,
"attributes": {
"name": "Bacău"
}
},
{
"type": "localities",
"id": 1607,
"attributes": {
"name": "Băcioiu"
}
},
{
"type": "localities",
"id": 1608,
"attributes": {
"name": "Bâcleşti"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Currency exchange rules
requires authentication
Returns list of currency exchange rules (EUR-RON) defined within the Plus-Auto Marketplace. Currency exchange rule may be optionally provided when a new Ad is created and can be used when generating Ad one pager where price is presented in both EUR and RON. The Ad one pager feature is optional and can be accessed from the web interface.
Each result includes:
- id: The id of the currency exchange rule.
- customRate: Indicates if this currency exchange rule allows custom exchange rate to be provided when creating a new Ad (please see exchangeRate attribute within Ads->Create).
- name: The name of the currency exchange rule (e.g.,
BNR+1%
).
Query Parameters:
- page[size] (integer, optional): The number of currency exchange rules to return per page.
Example: 9. - page[number] (int, optional): The page number to retrieve.
Example: 3.
Example request:
curl --request GET \
--get "https://api.plus-auto.ro/v1/exchange-rules" \
--header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
--header "Content-Type: application/vnd.api+json" \
--header "Accept: application/vnd.api+json"
const url = new URL(
"https://api.plus-auto.ro/v1/exchange-rules"
);
const headers = {
"Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
"Content-Type": "application/vnd.api+json",
"Accept": "application/vnd.api+json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/exchange-rules';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type' => 'application/vnd.api+json',
'Accept' => 'application/vnd.api+json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.plus-auto.ro/v1/exchange-rules'
headers = {
'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"meta": {
"currentPage": 1,
"from": 1,
"lastPage": 2,
"perPage": 10,
"to": 10,
"total": 20
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "http://api.plus-auto.ro/v1/exchange-rules?page%5Bnumber%5D=1&page%5Bsize%5D=10",
"last": "http://api.plus-auto.ro/v1/exchange-rules?page%5Bnumber%5D=2&page%5Bsize%5D=10",
"next": "http://api.plus-auto.ro/v1/exchange-rules?page%5Bnumber%5D=2&page%5Bsize%5D=10"
},
"data": [
{
"type": "exchange-rules",
"id": 1,
"attributes": {
"name": "BNR",
"customRate": false
}
},
{
"type": "exchange-rules",
"id": 2,
"attributes": {
"name": "BNR+0.5%",
"customRate": false
}
},
{
"type": "exchange-rules",
"id": 3,
"attributes": {
"name": "BNR+1%",
"customRate": false
}
},
{
"type": "exchange-rules",
"id": 4,
"attributes": {
"name": "BRD",
"customRate": true
}
},
{
"type": "exchange-rules",
"id": 5,
"attributes": {
"name": "BNR+1.5%",
"customRate": false
}
},
{
"type": "exchange-rules",
"id": 6,
"attributes": {
"name": "ALPHA BANK",
"customRate": true
}
},
{
"type": "exchange-rules",
"id": 7,
"attributes": {
"name": "BANCA COMERCIALA INTESA SANPAOLO",
"customRate": true
}
},
{
"type": "exchange-rules",
"id": 8,
"attributes": {
"name": "BCR",
"customRate": true
}
},
{
"type": "exchange-rules",
"id": 9,
"attributes": {
"name": "BANCA TRANSILVANIA",
"customRate": true
}
},
{
"type": "exchange-rules",
"id": 10,
"attributes": {
"name": "CEC BANK",
"customRate": true
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.