Apps API (1.0.0)

Download OpenAPI specification:

Welcome

Welcome to the Apps API documentation. This API provides endpoints for the NettiX applications.

Authentication

For authentication there must be an auth0 (Alma Account) access-token as a bearer in request headers.

Authorization: Bearer <access-token>

If you are making requests to a branch deployment, please add the branch identifier to the url betweeen domain and path. For example: https://apps-api.ajomark.dev/api1-ajomark-15504/api/v2

Checkout

Get orders

Returns a paginated list of orders with optional filters.

Authorizations:
bearerAuth
query Parameters
page
integer >= 1

Page number (default: 1)

limit
integer [ 1 .. 100 ]

Number of orders per page (default: 20, max: 100)

status
string

Order status filter (e.g., draft, pending, processing, completed, cancelled, failed)

user
string

User ID or identifier filter

email
string

Billing email filter

application
string

Vertical/application source filter (must match a valid vertical name)

dateFrom
string <date>

Start date filter (format: YYYY-MM-DD)

dateTo
string <date>

End date filter (format: YYYY-MM-DD)

Responses

Response samples

Content type
application/json
{
  • "page": 1,
  • "limit": 20,
  • "total": 100,
  • "orders": [
    ]
}

Get Order

Returns complete order information including line items, billing details, and current status.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Order ID

Responses

Response samples

Content type
application/json
{
  • "order_id": 1,
  • "transaction_id": "8437be3e-7f32-4d5c-a849-be3d69c8a128",
  • "id_netti_user": 123,
  • "order_status": "draft",
  • "payment_gateway": "paytrail",
  • "payment_method": "credit_card",
  • "net_total": 100,
  • "taxes_total": 24,
  • "discount_total": 0,
  • "gross_total": 124,
  • "date_created": "2025-10-01T22:30:00",
  • "date_updated": "2025-10-01T22:30:00",
  • "created_from": "auto",
  • "billing": {
    },
  • "line_items": [
    ]
}

Update order

Updates an existing order with new line items and billing information.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Order ID

Request Body schema: application/json
required
transaction_id
string or null

Unique transaction ID for the payment

id_netti_user
integer
order_status
string
Enum: "draft" "pending" "processing" "completed" "cancelled" "failed"
payment_gateway
string
payment_method
string
created_from
string
Enum: "auto" "vene" "moto" "karavaani" "kone" "varaosa" "rekkari" "teho"
required
object (BillingRequest)
required
Array of objects (LineItemRequest)

Responses

Request samples

Content type
application/json
{
  • "transaction_id": "8437be3e-7f32-4d5c-a849-be3d69c8a128",
  • "id_netti_user": 123,
  • "order_status": "processing",
  • "payment_gateway": "paytrail",
  • "payment_method": "credit_card",
  • "created_from": "auto",
  • "billing": {
    },
  • "line_items": [
    ]
}

Response samples

Content type
application/json
{
  • "order_id": 1,
  • "transaction_id": "8437be3e-7f32-4d5c-a849-be3d69c8a128",
  • "id_netti_user": 123,
  • "order_status": "draft",
  • "payment_gateway": "paytrail",
  • "payment_method": "credit_card",
  • "net_total": 100,
  • "taxes_total": 24,
  • "discount_total": 0,
  • "gross_total": 124,
  • "date_created": "2025-10-01T22:30:00",
  • "date_updated": "2025-10-01T22:30:00",
  • "created_from": "auto",
  • "billing": {
    },
  • "line_items": [
    ]
}

Create order

Creates a new order with the provided line items and billing information.

Authorizations:
bearerAuth
Request Body schema: application/json
required
transaction_id
string or null

Unique transaction ID for the payment

id_netti_user
integer
order_status
string
Enum: "draft" "pending" "processing" "completed" "cancelled" "failed"
payment_gateway
string
payment_method
string
created_from
string
Enum: "auto" "vene" "moto" "karavaani" "kone" "varaosa" "rekkari" "teho"
required
object (BillingRequest)
required
Array of objects (LineItemRequest)

Responses

Request samples

Content type
application/json
{
  • "transaction_id": "8437be3e-7f32-4d5c-a849-be3d69c8a128",
  • "id_netti_user": 123,
  • "order_status": "draft",
  • "payment_gateway": "paytrail",
  • "payment_method": "credit_card",
  • "created_from": "auto",
  • "billing": {
    },
  • "line_items": [
    ]
}

Response samples

Content type
application/json
{
  • "order_id": 1,
  • "transaction_id": "8437be3e-7f32-4d5c-a849-be3d69c8a128",
  • "id_netti_user": 123,
  • "order_status": "draft",
  • "payment_gateway": "paytrail",
  • "payment_method": "credit_card",
  • "net_total": 100,
  • "taxes_total": 24,
  • "discount_total": 0,
  • "gross_total": 124,
  • "date_created": "2025-10-01T22:30:00",
  • "date_updated": "2025-10-01T22:30:00",
  • "created_from": "auto",
  • "billing": {
    },
  • "line_items": [
    ]
}

Get products

Returns a paginated list of all active products with optional filters.

Authorizations:
bearerAuth
query Parameters
page
integer >= 1

Page number (default: 1)

limit
integer [ 1 .. 100 ]

Number of products per page (default: 20, max: 100)

name
string

Filter by product name (partial match)

currency
string

Filter by currency (ISO 4217)

is_active
boolean

Filter by is_active true or false (default: all products)

Responses

Response samples

Content type
application/json
{
  • "page": 1,
  • "limit": 20,
  • "total": 100,
  • "products": [
    ]
}

Create product

Creates a new product and returns the created product details.

Authorizations:
bearerAuth
Request Body schema: application/json
required
name
required
string
price
required
string
tax
required
string
currency
required
string
description
string
is_active
boolean

Whether the product is active. Defaults to true if not specified.

Responses

Request samples

Content type
application/json
{
  • "name": "Premium Car Wash",
  • "price": "19.99",
  • "tax": "24.00",
  • "currency": "EUR",
  • "description": "Full exterior and interior car wash service.",
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "product_id": 1,
  • "name": "Premium Car Wash",
  • "price": "19.99",
  • "tax": "24.00",
  • "currency": "EUR",
  • "description": "Full exterior and interior car wash service.",
  • "is_active": true
}

Get quota

Returns how many purchased products are still unused by the user.

Authorizations:
bearerAuth
query Parameters
user_id
required
integer

Netti user ID to fetch quota for

Responses

Response samples

Content type
application/json
{
  • "user_id": 12345,
  • "purchased": 5,
  • "used": 3,
  • "remaining": 2
}

Get product

Returns the details of a single active product.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Product ID

Responses

Response samples

Content type
application/json
{
  • "product_id": 1,
  • "name": "Premium Car Wash",
  • "price": "19.99",
  • "tax": "24.00",
  • "currency": "EUR",
  • "description": "Full exterior and interior car wash service.",
  • "is_active": true
}

Update product

Updates an existing product and returns the updated details.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Product ID

Request Body schema: application/json
required
name
required
string
price
required
string
tax
required
string
currency
required
string
description
string
is_active
boolean

Whether the product is active or soft-deleted.

Responses

Request samples

Content type
application/json
{
  • "name": "Premium Car Wash",
  • "price": "19.99",
  • "tax": "24.00",
  • "currency": "EUR",
  • "description": "Full exterior and interior car wash service.",
  • "is_active": true
}

Response samples

Content type
application/json
{
  • "product_id": 1,
  • "name": "Premium Car Wash",
  • "price": "19.99",
  • "tax": "24.00",
  • "currency": "EUR",
  • "description": "Full exterior and interior car wash service.",
  • "is_active": true
}

Delete product

Soft-deletes a product (marks as inactive) and returns confirmation.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Product ID

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Product with ID 1 has been deleted (soft-deleted).",
  • "product_id": 1
}

Reservation

Search for available rentals

Search for rentals that are available for the given date range

Authorizations:
bearerAuth
query Parameters
vertical
string
Default: "karavaani"

Vertical to search in (e.g., karavaani)

from
required
string <date>

Start date of the availability period (YYYY-MM-DD)

to
required
string <date>

End date of the availability period (YYYY-MM-DD)

ad_ids
string

Comma-separated list of ad IDs to filter by

Responses

Response samples

Content type
application/json
{
  • "count": 5,
  • "items": [
    ]
}

Create availability period for a rental

Add a new availability period for a rental

Authorizations:
bearerAuth
Request Body schema: application/json
required
vertical
required
string

Vertical for the availability (e.g., karavaani)

ad_id
required
string

Ad ID for the availability

start_date
required
string <date>

Start date of availability (YYYY-MM-DD)

end_date
required
string <date>

End date of availability (YYYY-MM-DD)

is_available
boolean
Default: true

Whether the period is available

note
string

Optional note about the availability period

day_price
string <decimal>

Day price for the availability

week_price
string <decimal>

Week price for the availability

currency
string

Currency code (e.g., EUR)

Responses

Request samples

Content type
application/json
{
  • "vertical": "karavaani",
  • "ad_id": "12345",
  • "start_date": "2025-06-01",
  • "end_date": "2025-06-07",
  • "is_available": true,
  • "note": "Available for booking",
  • "day_price": "50.00",
  • "week_price": "300.00",
  • "currency": "EUR"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "ad_id": "12345",
  • "vertical": "karavaani",
  • "is_available": true,
  • "start_date": "2025-06-01",
  • "end_date": "2025-06-07",
  • "note": "High season pricing",
  • "day_price": "50.00",
  • "week_price": "300.00",
  • "currency": "EUR",
  • "created_at": "2025-01-01T12:00:00Z",
  • "updated_at": "2025-01-05T12:00:00Z"
}

Create reservation

Create a new reservation for a rental

Authorizations:
bearerAuth
path Parameters
id
required
integer

Rental ID

Request Body schema: application/json
required
start_date
required
string <date>

Start date of reservation (YYYY-MM-DD)

end_date
required
string <date>

End date of reservation (YYYY-MM-DD)

netti_user_id
required
string

Netti user ID making the reservation

hold
boolean
Default: false

Whether to create a hold instead of confirmed reservation

note
string

Optional note about the reservation

Responses

Request samples

Content type
application/json
{
  • "start_date": "2025-06-01",
  • "end_date": "2025-06-03",
  • "netti_user_id": "user_123",
  • "hold": false,
  • "note": "Looking forward to it"
}

Response samples

Content type
application/json
{
  • "id": 101,
  • "availability_id": 1,
  • "start_date": "2025-06-01",
  • "end_date": "2025-06-03",
  • "status": "CONFIRMED",
  • "netti_user_id": "user_123",
  • "hold": false,
  • "total_price": "150.00",
  • "currency": "EUR",
  • "note": "Family vacation"
}

Update reservation status

Updates the status of an existing reservation

Authorizations:
bearerAuth
path Parameters
id
required
integer

Reservation ID

Request Body schema: application/json
required
status
required
string
Enum: "HOLD" "CONFIRMED" "CANCELLED"

New status of the reservation

Responses

Request samples

Content type
application/json
{
  • "status": "CANCELLED"
}

Response samples

Content type
application/json
{
  • "id": 101,
  • "availability_id": 1,
  • "start_date": "2025-06-01",
  • "end_date": "2025-06-03",
  • "status": "CONFIRMED",
  • "netti_user_id": "user_123",
  • "hold": false,
  • "total_price": "150.00",
  • "currency": "EUR",
  • "note": "Family vacation"
}

Get all reservations

Returns a list of all reservations

Authorizations:
bearerAuth
query Parameters
page
integer

Page number

limit
integer

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "count": 10,
  • "items": [
    ]
}