Fstop (1.0.0)

Download OpenAPI specification:

The Fstop API enables developers to build integrations and automations for the Fstop photography business platform. Manage clients, projects, bookings, and galleries programmatically.

bookings

List all bookings

Retrieve a list of all bookings. Optionally, filter by project_id.

Authorizations:
jwtAuth

Responses

Response samples

Content type
application/json

List of bookings

[
  • [
    ]
]

Create a booking

Create a new booking for a project.

Authorizations:
jwtAuth
Request Body schema:
required
project_id
required
string <uuid>

UUID of the project for this booking

date
required
string <date>

Date of the booking

time
required
string <time>

Time of the booking

duration
required
integer

Booking duration in minutes

location
required
string <= 20 characters

Booking location

Responses

Request samples

Content type

Example booking creation request

{
  • "project_id": "660e8400-e29b-41d4-a716-446655440000",
  • "date": "2026-06-15",
  • "time": "14:00:00",
  • "duration": 480,
  • "location": "Downtown Venue"
}

Response samples

Content type
application/json

Booking created successfully

{
  • "id": "770e8400-e29b-41d4-a716-446655440001",
  • "project": {
    },
  • "date": "2026-06-15",
  • "time": "14:00:00",
  • "duration": 480,
  • "location": "Downtown Venue",
  • "created_at": "2026-05-21T10:30:00Z"
}

Retrieve a booking

Get a specific booking by ID.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this booking.

Responses

Response samples

Content type
application/json

Single booking details

{
  • "id": "770e8400-e29b-41d4-a716-446655440000",
  • "project": {
    },
  • "date": "2026-06-15",
  • "time": "14:00:00",
  • "duration": 480,
  • "location": "Downtown Venue",
  • "created_at": "2026-05-21T10:30:00Z"
}

Update a booking

Update an existing booking.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this booking.

Request Body schema:
required
project_id
required
string <uuid>

UUID of the project for this booking

date
required
string <date>

Date of the booking

time
required
string <time>

Time of the booking

duration
required
integer

Booking duration in minutes

location
required
string <= 20 characters

Booking location

Responses

Request samples

Content type
{
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "date": "2019-08-24",
  • "time": "14:15:22Z",
  • "duration": 0,
  • "location": "string"
}

Response samples

Content type
application/json

Booking updated successfully

{
  • "id": "770e8400-e29b-41d4-a716-446655440000",
  • "project": {
    },
  • "date": "2026-06-16",
  • "time": "15:00:00",
  • "duration": 480,
  • "location": "Downtown Venue - Updated",
  • "created_at": "2026-05-21T10:30:00Z"
}

Partially update a booking

Partially update an existing booking.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this booking.

Request Body schema:
project_id
string <uuid>

UUID of the project for this booking

date
string <date>

Date of the booking

time
string <time>

Time of the booking

duration
integer

Booking duration in minutes

location
string <= 20 characters

Booking location

Responses

Request samples

Content type
{
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "date": "2019-08-24",
  • "time": "14:15:22Z",
  • "duration": 0,
  • "location": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project": {
    },
  • "date": "2019-08-24",
  • "time": "14:15:22Z",
  • "duration": 0,
  • "location": "string",
  • "created_at": "2019-08-24T14:15:22Z"
}

Delete a booking

Delete a booking by ID.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this booking.

Responses

Response samples

Content type
application/json

Missing authentication credentials

{
  • "detail": "Authentication credentials were not provided."
}

clients

List all clients

Retrieve a list of all clients in the system.

Authorizations:
jwtAuth

Responses

Response samples

Content type
application/json

List of clients

[
  • [
    ]
]

Create a client

Create a new client.

Authorizations:
jwtAuth
Request Body schema:
required
first_name
required
string <= 20 characters

Client's first name

last_name
required
string <= 20 characters

Client's last name

city
required
string <= 20 characters

City where client is located

state
required
string <= 2 characters

State abbreviation (e.g., CA, NY)

zip_code
required
string <= 20 characters

Postal code for client's address

email
required
string <email>

Client's email address for contact

phone_number
required
string

Client's phone number

Responses

Request samples

Content type

Example client creation request

{
  • "first_name": "Alice",
  • "last_name": "Johnson",
  • "city": "Cincinnati",
  • "state": "OH",
  • "zip_code": "45202",
  • "email": "alice.johnson@example.com",
  • "phone_number": "+12161239999"
}

Response samples

Content type
application/json

Client created successfully

{
  • "id": "550e8400-e29b-41d4-a716-446655440002",
  • "first_name": "Alice",
  • "last_name": "Johnson",
  • "city": "Cincinnati",
  • "state": "OH",
  • "zip_code": "45202",
  • "email": "alice.johnson@example.com",
  • "phone_number": "+12161239999",
  • "created_at": "2026-05-21T10:10:00Z"
}

Retrieve a client

Get a specific client by ID.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this client.

Responses

Response samples

Content type
application/json

Single client details

{
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "first_name": "John",
  • "last_name": "Doe",
  • "city": "Cleveland",
  • "state": "OH",
  • "zip_code": "44122",
  • "email": "john.doe@example.com",
  • "phone_number": "+12161231234",
  • "created_at": "2026-05-21T10:00:00Z"
}

Update a client

Update an existing client.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this client.

Request Body schema:
required
first_name
required
string <= 20 characters

Client's first name

last_name
required
string <= 20 characters

Client's last name

city
required
string <= 20 characters

City where client is located

state
required
string <= 2 characters

State abbreviation (e.g., CA, NY)

zip_code
required
string <= 20 characters

Postal code for client's address

email
required
string <email>

Client's email address for contact

phone_number
required
string

Client's phone number

Responses

Request samples

Content type
{
  • "first_name": "string",
  • "last_name": "string",
  • "city": "string",
  • "state": "st",
  • "zip_code": "string",
  • "email": "user@example.com",
  • "phone_number": "string"
}

Response samples

Content type
application/json

Client updated successfully

{
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "first_name": "John",
  • "last_name": "Doe Updated",
  • "city": "Cleveland",
  • "state": "OH",
  • "zip_code": "44122",
  • "email": "john.updated@example.com",
  • "phone_number": "+12161231234",
  • "created_at": "2026-05-21T10:00:00Z"
}

Partially update a client

Partially update an existing client.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this client.

Request Body schema:
first_name
string <= 20 characters

Client's first name

last_name
string <= 20 characters

Client's last name

city
string <= 20 characters

City where client is located

state
string <= 2 characters

State abbreviation (e.g., CA, NY)

zip_code
string <= 20 characters

Postal code for client's address

email
string <email>

Client's email address for contact

phone_number
string

Client's phone number

Responses

Request samples

Content type
{
  • "first_name": "string",
  • "last_name": "string",
  • "city": "string",
  • "state": "st",
  • "zip_code": "string",
  • "email": "user@example.com",
  • "phone_number": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "first_name": "string",
  • "last_name": "string",
  • "city": "string",
  • "state": "st",
  • "zip_code": "string",
  • "email": "user@example.com",
  • "phone_number": "string",
  • "created_at": "2019-08-24T14:15:22Z"
}

Delete a client

Delete a client by ID.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this client.

Responses

Response samples

Content type
application/json

Missing authentication credentials

{
  • "detail": "Authentication credentials were not provided."
}

galleries

List all galleries

Retrieve a list of all galleries. Optionally filter by project_id.

Authorizations:
jwtAuth

Responses

Response samples

Content type
application/json

List of galleries

[
  • [
    ]
]

projects

List all projects

Retrieve a list of all projects. Optionally filter by client_id.

Authorizations:
jwtAuth

Responses

Response samples

Content type
application/json

List of projects

[
  • [
    ]
]

Create a project

Create a new project for a client.

Authorizations:
jwtAuth
Request Body schema:
required
project_name
required
string <= 20 characters

Name of the project

project_type
required
string
Enum: "event" "portrait" "party"

Type of project (event, portrait, or party)

  • event - event
  • portrait - portrait
  • party - party
client_id
required
string <uuid>

UUID of the client for this project

Responses

Request samples

Content type

Example project creation request

{
  • "project_name": "Birthday Party",
  • "project_type": "party",
  • "client_id": "550e8400-e29b-41d4-a716-446655440002"
}

Response samples

Content type
application/json

Project created successfully

{
  • "id": "660e8400-e29b-41d4-a716-446655440002",
  • "project_name": "Birthday Party",
  • "project_type": "party",
  • "client": {
    },
  • "created_at": "2026-05-21T10:25:00Z"
}

Retrieve a project

Get a specific project by ID.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this project.

Responses

Response samples

Content type
application/json

Single project details

{
  • "id": "660e8400-e29b-41d4-a716-446655440000",
  • "project_name": "Wedding",
  • "project_type": "event",
  • "client": {
    },
  • "created_at": "2026-05-21T10:15:00Z"
}

Update a project

Update an existing project.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this project.

Request Body schema:
required
project_name
required
string <= 20 characters

Name of the project

project_type
required
string
Enum: "event" "portrait" "party"

Type of project (event, portrait, or party)

  • event - event
  • portrait - portrait
  • party - party
client_id
required
string <uuid>

UUID of the client for this project

Responses

Request samples

Content type
{
  • "project_name": "string",
  • "project_type": "event",
  • "client_id": "5b3fa7ba-57d3-4017-a65b-d57dcd2db643"
}

Response samples

Content type
application/json

Project updated successfully

{
  • "id": "660e8400-e29b-41d4-a716-446655440000",
  • "project_name": "Wedding - Updated",
  • "project_type": "event",
  • "client": {
    },
  • "created_at": "2026-05-21T10:15:00Z"
}

Partially update a project

Partially update an existing project.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this project.

Request Body schema:
project_name
string <= 20 characters

Name of the project

project_type
string
Enum: "event" "portrait" "party"

Type of project (event, portrait, or party)

  • event - event
  • portrait - portrait
  • party - party
client_id
string <uuid>

UUID of the client for this project

Responses

Request samples

Content type
{
  • "project_name": "string",
  • "project_type": "event",
  • "client_id": "5b3fa7ba-57d3-4017-a65b-d57dcd2db643"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_name": "string",
  • "project_type": "event",
  • "client": {
    },
  • "created_at": "2019-08-24T14:15:22Z"
}

Delete a project

Delete a project by ID.

Authorizations:
jwtAuth
path Parameters
id
required
string <uuid>

A UUID string identifying this project.

Responses

Response samples

Content type
application/json

Missing authentication credentials

{
  • "detail": "Authentication credentials were not provided."
}

token

Obtain JWT token

Authenticate and obtain access and refresh tokens.

Request Body schema:
required
username
required
string
password
required
string

Responses

Request samples

Content type
{
  • "username": "string",
  • "password": "string"
}

Response samples

Content type
application/json
{
  • "access": "string",
  • "refresh": "string"
}

Refresh JWT token

Refresh an expired access token using a refresh token.

Request Body schema:
required
refresh
required
string

Responses

Request samples

Content type
{
  • "refresh": "string"
}

Response samples

Content type
application/json
{
  • "access": "string"
}