openapi: 3.0.3
info:
title: 'directorybackend API Documentation'
description: ''
version: 1.0.0
servers:
-
url: 'https://staging.me-fie.co.uk'
tags:
-
name: Endpoints
description: ''
paths:
/api/login:
post:
summary: ''
operationId: postApiLogin
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
/api/register:
post:
summary: ''
operationId: postApiRegister
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
first_name:
type: string
description: 'Must be at least 3 characters. Must not be greater than 255 characters.'
example: b
last_name:
type: string
description: 'Must be at least 3 characters. Must not be greater than 255 characters.'
example: 'n'
email:
type: string
description: 'Must be a valid email address. Must not be greater than 255 characters.'
example: ashly64@example.com
country_code:
type: string
description: 'Must not be greater than 10 characters.'
example: vdljni
phone:
type: string
description: 'Must not be greater than 30 characters.'
example: k
password:
type: string
description: 'Must be at least 8 characters.'
example: 'wmi/#iw/k'
required:
- first_name
- last_name
- email
- country_code
- phone
- password
security: []
/api/logout:
post:
summary: ''
operationId: postApiLogout
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
/api/update_user:
patch:
summary: ''
operationId: patchApiUpdate_user
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
multipart/form-data:
schema:
type: object
properties:
first_name:
type: string
description: 'Must be at least 2 characters. Must not be greater than 255 characters.'
example: b
last_name:
type: string
description: 'Must be at least 2 characters. Must not be greater than 255 characters.'
example: 'n'
email:
type: string
description: 'Must be a valid email address. Must not be greater than 255 characters.'
example: ashly64@example.com
country_code:
type: string
description: 'Must not be greater than 10 characters.'
example: vdljni
phone:
type: string
description: 'Must not be greater than 30 characters.'
example: k
avatar:
type: string
format: binary
description: 'Must be a file. Must not be greater than 2048 kilobytes.'
security: []
/api/delete_account:
delete:
summary: ''
operationId: deleteApiDelete_account
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
password:
type: string
description: ''
example: architecto
required:
- password
security: []
/api/auth/google/redirect:
get:
summary: ''
operationId: getApiAuthGoogleRedirect
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/auth/google/callback:
get:
summary: ''
operationId: getApiAuthGoogleCallback
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/all_users:
get:
summary: ''
operationId: getApiAll_users
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/users/{id}':
get:
summary: ''
operationId: getApiUsersId
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: id
description: 'The ID of the user.'
example: architecto
required: true
schema:
type: string
'/api/users/{user}/make_admin':
patch:
summary: ''
operationId: patchApiUsersUserMake_admin
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: user
description: 'The user.'
example: architecto
required: true
schema:
type: string
'/api/users/{user}/make_vendor':
patch:
summary: ''
operationId: patchApiUsersUserMake_vendor
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: user
description: 'The user.'
example: architecto
required: true
schema:
type: string
'/api/users/{user}/make_user':
patch:
summary: ''
operationId: patchApiUsersUserMake_user
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: user
description: 'The user.'
example: architecto
required: true
schema:
type: string
'/api/users/{user}/make_listing_agent':
patch:
summary: ''
operationId: patchApiUsersUserMake_listing_agent
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: user
description: 'The user.'
example: architecto
required: true
schema:
type: string
'/api/users/{user}/remove_listing_agent':
post:
summary: ''
operationId: postApiUsersUserRemove_listing_agent
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: user
description: 'The user.'
example: architecto
required: true
schema:
type: string
/api/user:
get:
summary: ''
operationId: getApiUser
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/change_password:
put:
summary: ''
operationId: putApiChange_password
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
/api/reset_mail:
post:
summary: ''
operationId: postApiReset_mail
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
/api/reset_password:
post:
summary: ''
operationId: postApiReset_password
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
/api/verify_user:
post:
summary: ''
operationId: postApiVerify_user
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
/api/verify_email:
post:
summary: ''
operationId: postApiVerify_email
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
/api/resend_otp:
post:
summary: ''
operationId: postApiResend_otp
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
'/api/users/{user_id}/suspend':
post:
summary: 'Suspend a user'
operationId: suspendAUser
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
reason:
type: string
description: 'Must not be greater than 500 characters.'
example: b
duration:
type: string
description: ''
example: 30_days
enum:
- 1_day
- 7_days
- 30_days
- permanent
nullable: true
custom_date:
type: string
description: 'Must be a valid date. Must be a date after now.'
example: '2052-09-28'
nullable: true
required:
- reason
security: []
parameters:
-
in: path
name: user_id
description: 'The ID of the user.'
example: 1
required: true
schema:
type: integer
'/api/users/{user_id}/unsuspend':
post:
summary: 'Unsuspend a user'
operationId: unsuspendAUser
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: user_id
description: 'The ID of the user.'
example: 1
required: true
schema:
type: integer
'/api/listing/{listing}/opening_hours':
get:
summary: ''
operationId: getApiListingListingOpening_hours
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: ''
operationId: postApiListingListingOpening_hours
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: architecto
required: true
schema:
type: string
'/api/opening_hours/{opening_hour_slug}':
put:
summary: ''
operationId: putApiOpening_hoursOpening_hour_slug
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
day_of_week:
type: string
description: ''
example: Monday
enum:
- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
- Sunday
open_time:
type: string
description: 'Must be a valid date in the format H:i.'
example: '20:26'
close_time:
type: string
description: 'Must be a valid date in the format H:i.'
example: '20:26'
security: []
delete:
summary: ''
operationId: deleteApiOpening_hoursOpening_hour_slug
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: opening_hour_slug
description: 'The slug of the opening hour.'
example: architecto
required: true
schema:
type: string
/api/categories:
get:
summary: 'Public taxonomy — active main/sub categories only (legacy tags excluded per PRD §14), cached.'
operationId: publicTaxonomyActiveMainsubCategoriesOnlylegacyTagsExcludedPerPRD14Cached
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: ''
operationId: postApiCategories
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
type:
type: string
description: ''
example: mainCategory
enum:
- mainCategory
- subCategory
parent_slug:
type: string
description: 'The slug of an existing record in the categories table.'
example: architecto
nullable: true
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
is_top_category:
type: boolean
description: ''
example: false
featured_image:
type: string
format: binary
description: 'This field is required when is_top_category is true. Must be an image. Must not be greater than 2048 kilobytes.'
nullable: true
required:
- name
- type
security: []
/api/admin/categories:
get:
summary: "Admin taxonomy — active and archived main/sub categories, with live\nimpact counts and permitted actions. Legacy tags are not shown as\neditable categories here (PRD §18.2). Never cached."
operationId: adminTaxonomyActiveAndArchivedMainsubCategoriesWithLiveImpactCountsAndPermittedActionsLegacyTagsAreNotShownAsEditableCategoriesHerePRD182NeverCached
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/categories/{category_slug}':
put:
summary: ''
operationId: putApiCategoriesCategory_slug
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
multipart/form-data:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
is_top_category:
type: boolean
description: ''
example: false
featured_image:
type: string
format: binary
description: 'Must be an image. Must not be greater than 2048 kilobytes.'
nullable: true
security: []
delete:
summary: ''
operationId: deleteApiCategoriesCategory_slug
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: category_slug
description: 'The slug of the category.'
example: active-life
required: true
schema:
type: string
'/api/categories/{category_slug}/archive':
patch:
summary: ''
operationId: patchApiCategoriesCategory_slugArchive
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: category_slug
description: 'The slug of the category.'
example: active-life
required: true
schema:
type: string
'/api/categories/{category_slug}/merge':
post:
summary: ''
operationId: postApiCategoriesCategory_slugMerge
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
replacement_category_id:
type: integer
description: 'The id of an existing record in the categories table.'
example: 16
required:
- replacement_category_id
security: []
parameters:
-
in: path
name: category_slug
description: 'The slug of the category.'
example: active-life
required: true
schema:
type: string
/api/categories_with_listings:
get:
summary: ''
operationId: getApiCategories_with_listings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/countries_dropdown:
get:
summary: ''
operationId: getApiCountries_dropdown
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/country_context:
get:
summary: ''
operationId: getApiCountry_context
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/business_categories:
get:
summary: ''
operationId: getApiBusiness_categories
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/community_categories:
get:
summary: ''
operationId: getApiCommunity_categories
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/event_categories:
get:
summary: ''
operationId: getApiEvent_categories
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/approved_listings:
get:
summary: ''
operationId: getApiApproved_listings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/listing/{listing_slug}/show':
get:
summary: ''
operationId: getApiListingListing_slugShow
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing_slug}/social-preview':
get:
summary: "Lightweight public metadata for social sharing previews (Open Graph /\nTwitter cards) — deliberately separate from show() so building a\nsocial preview never inflates the listing's view count and crawlers\ndon't need to fetch the full listing payload (media, categories,\nratings, events, etc.) just to build four strings."
operationId: lightweightPublicMetadataForSocialSharingPreviewsOpenGraphTwitterCardsDeliberatelySeparateFromShowSoBuildingASocialPreviewNeverInflatesTheListingsViewCountAndCrawlersDontNeedToFetchTheFullListingPayloadmediaCategoriesRatingsEventsEtcJustToBuildFourStrings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
/api/listing/profile:
post:
summary: ''
operationId: postApiListingProfile
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
bio:
type: string
description: 'Must not be greater than 65535 characters.'
example: 'n'
nullable: true
primary_country_code:
type: string
description: 'This field is required when primary_phone is present. Must be at least 1 character.'
example: gzmiyvdljnikhway
nullable: true
primary_phone:
type: string
description: ''
example: architecto
nullable: true
secondary_country_code:
type: string
description: 'This field is required when secondary_phone is present. Must be at least 1 character.'
example: ngzmiyvdljnikhwa
nullable: true
secondary_phone:
type: string
description: ''
example: architecto
nullable: true
email:
type: string
description: 'Must be a valid email address.'
example: zbailey@example.net
nullable: true
category_ids:
type: array
description: 'The id of an existing record in the categories table.'
example: null
items:
type: string
website:
type: string
description: ''
example: architecto
nullable: true
business_reg_num:
type: string
description: ''
example: architecto
nullable: true
registration_country:
type: string
description: 'This field is required when registration_authority is present. Must be 2 characters.'
example: ng
nullable: true
registration_authority:
type: string
description: 'This field is required when registration_country is present. Must not be greater than 255 characters.'
example: z
nullable: true
type:
type: string
description: ''
example: event
enum:
- business
- event
- community
business_hours_mode:
type: string
description: ''
example: contact_for_hours
enum:
- scheduled
- always_open
- appointment_only
- contact_for_hours
nullable: true
community_location_scope:
type: string
description: ''
example: online
enum:
- physical
- online
- hybrid
- global
nullable: true
duplicate_assessment_id:
type: integer
description: 'The id of an existing record in the duplicate_check_attempts table.'
example: 16
nullable: true
duplicate_explanation:
type: string
description: 'Must not be greater than 2000 characters.'
example: 'n'
nullable: true
required:
- name
- type
security: []
'/api/listing/{listing_slug}/address':
put:
summary: ''
operationId: putApiListingListing_slugAddress
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
address:
type: string
description: ''
example: architecto
country:
type: string
description: ''
example: architecto
city:
type: string
description: ''
example: architecto
nullable: true
google_plus_code:
type: string
description: ''
example: architecto
nullable: true
latitude:
type: number
description: 'Must be between -90 and 90.'
example: -89
nullable: true
longitude:
type: number
description: 'Must be between -180 and 180.'
example: -180
nullable: true
required:
- address
- country
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
/api/listing/my_listings:
get:
summary: 'Return paginated listings owned by the authenticated user.'
operationId: returnPaginatedListingsOwnedByTheAuthenticatedUser
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/listing/{listing_slug}/update':
patch:
summary: ''
operationId: patchApiListingListing_slugUpdate
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
bio:
type: string
description: 'Must not be greater than 65535 characters.'
example: 'n'
primary_country_code:
type: string
description: 'This field is required when primary_phone is present. Must be at least 1 character.'
example: gzmiyvdljnikhway
nullable: true
primary_phone:
type: string
description: 'This field is required when primary_country_code is present.'
example: architecto
nullable: true
secondary_country_code:
type: string
description: 'Must be at least 1 character.'
example: ngzmiyvdljnikhwa
nullable: true
secondary_phone:
type: string
description: ''
example: architecto
nullable: true
email:
type: string
description: 'Must be a valid email address.'
example: zbailey@example.net
nullable: true
category_ids:
type: array
description: 'The id of an existing record in the categories table.'
example: null
items:
type: string
website:
type: string
description: ''
example: architecto
nullable: true
business_reg_num:
type: string
description: ''
example: architecto
nullable: true
registration_country:
type: string
description: 'This field is required when registration_authority is present. Must be 2 characters.'
example: ng
nullable: true
registration_authority:
type: string
description: 'This field is required when registration_country is present. Must not be greater than 255 characters.'
example: z
nullable: true
business_hours_mode:
type: string
description: ''
example: scheduled
enum:
- scheduled
- always_open
- appointment_only
- contact_for_hours
nullable: true
community_location_scope:
type: string
description: ''
example: hybrid
enum:
- physical
- online
- hybrid
- global
nullable: true
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing_slug}':
delete:
summary: ''
operationId: deleteApiListingListing_slug
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
reason:
type: string
description: 'Must not be greater than 1000 characters.'
example: b
nullable: true
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/discard_draft':
post:
summary: ''
operationId: postApiListingListingDiscard_draft
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/revisions':
post:
summary: ''
operationId: postApiListingListingRevisions
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/open_revision':
get:
summary: ''
operationId: getApiListingListingOpen_revision
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/opening_hours/immediate_change':
post:
summary: ''
operationId: postApiListingListingOpening_hoursImmediate_change
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/revisions/{revision}':
get:
summary: ''
operationId: getApiRevisionsRevision
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
patch:
summary: ''
operationId: patchApiRevisionsRevision
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: revision
description: 'The revision.'
example: architecto
required: true
schema:
type: string
'/api/revisions/{revision}/submit':
post:
summary: ''
operationId: postApiRevisionsRevisionSubmit
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: revision
description: 'The revision.'
example: architecto
required: true
schema:
type: string
'/api/revisions/{revision}/resubmit':
post:
summary: ''
operationId: postApiRevisionsRevisionResubmit
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: revision
description: 'The revision.'
example: architecto
required: true
schema:
type: string
'/api/listing/{listing_slug}/media':
post:
summary: ''
operationId: postApiListingListing_slugMedia
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
media:
type: array
description: 'Must be a file. Must not be greater than 5120 kilobytes.'
items:
type: string
format: binary
sort_orders:
type: array
description: 'Must be at least 0. Must not be greater than 3.'
example:
- 1
items:
type: integer
sort_order:
type: array
description: 'Must be at least 0. Must not be greater than 3.'
example:
- 1
items:
type: integer
required:
- media
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing_slug}/media_update':
post:
summary: ''
operationId: postApiListingListing_slugMedia_update
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
media_id:
type: integer
description: ''
example: 16
media:
type: string
format: binary
description: 'Must be a file. Must not be greater than 5120 kilobytes.'
sort_order:
type: integer
description: 'Must be at least 0. Must not be greater than 3.'
example: 1
nullable: true
required:
- media_id
- media
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
/api/notifications:
get:
summary: ''
operationId: getApiNotifications
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/notifications/mark-all-read:
post:
summary: ''
operationId: postApiNotificationsMarkAllRead
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
'/api/notifications/{notification}/read':
patch:
summary: ''
operationId: patchApiNotificationsNotificationRead
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: notification
description: 'The notification.'
example: architecto
required: true
schema:
type: string
'/api/listing/{listing}/submit':
post:
summary: ''
operationId: postApiListingListingSubmit
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/experience':
patch:
summary: ''
operationId: patchApiListingListingExperience
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/form_progress':
patch:
summary: ''
operationId: patchApiListingListingForm_progress
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/resubmit':
post:
summary: ''
operationId: postApiListingListingResubmit
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/status_history':
get:
summary: ''
operationId: getApiListingListingStatus_history
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/update_status':
patch:
summary: ''
operationId: patchApiListingListingUpdate_status
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/media_revisions':
post:
summary: ''
operationId: postApiListingListingMedia_revisions
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/media_revisions/{revision}':
get:
summary: ''
operationId: getApiMedia_revisionsRevision
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: revision
description: ''
example: architecto
required: true
schema:
type: string
'/api/media_revisions/{revision}/items':
post:
summary: ''
operationId: postApiMedia_revisionsRevisionItems
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: revision
description: ''
example: architecto
required: true
schema:
type: string
'/api/media_revisions/{revision}/items/{item}/upload':
post:
summary: ''
operationId: postApiMedia_revisionsRevisionItemsItemUpload
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: revision
description: ''
example: architecto
required: true
schema:
type: string
-
in: path
name: item
description: 'The item.'
example: architecto
required: true
schema:
type: string
'/api/media_revisions/{revision}/items/{item}/confirm':
post:
summary: ''
operationId: postApiMedia_revisionsRevisionItemsItemConfirm
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: revision
description: ''
example: architecto
required: true
schema:
type: string
-
in: path
name: item
description: 'The item.'
example: architecto
required: true
schema:
type: string
'/api/media_revisions/{revision}/desired_state':
patch:
summary: ''
operationId: patchApiMedia_revisionsRevisionDesired_state
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: revision
description: ''
example: architecto
required: true
schema:
type: string
'/api/media_revisions/{revision}/commit':
post:
summary: ''
operationId: postApiMedia_revisionsRevisionCommit
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: revision
description: ''
example: architecto
required: true
schema:
type: string
'/api/media_revisions/{revision}/cancel':
post:
summary: ''
operationId: postApiMedia_revisionsRevisionCancel
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: revision
description: ''
example: architecto
required: true
schema:
type: string
'/api/listing/{listing}/eventDetails':
post:
summary: ''
operationId: postApiListingListingEventDetails
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event_start_date:
type: string
description: 'Must be a valid date.'
example: '2026-09-04T20:26:38'
event_end_date:
type: string
description: 'Must be a valid date. Must be a date after or equal to event_start_date.'
example: '2052-09-27'
event_start_time:
type: string
description: 'Must be a valid date in the format H:i.'
example: '20:26'
event_end_time:
type: string
description: 'Must be a valid date in the format H:i.'
example: '20:26'
event_venue:
type: string
description: 'Must not be greater than 255 characters.'
example: 'n'
nullable: true
event_venue_address:
type: string
description: 'Must not be greater than 500 characters.'
example: g
nullable: true
event_city:
type: string
description: 'Must not be greater than 255 characters.'
example: z
nullable: true
event_country:
type: string
description: 'Must not be greater than 255 characters.'
example: m
nullable: true
event_type:
type: string
description: ''
example: 1_day
enum:
- 1_day
- 2_days
- multi_days
nullable: true
event_location:
type: string
description: ''
example: hybrid
enum:
- in_person
- online
- hybrid
nullable: true
event_price:
type: number
description: 'Must be at least 0.'
example: 8
nullable: true
event_currency:
type: string
description: 'Must be 3 characters.'
example: yvd
nullable: true
event_ticket_url:
type: string
description: 'Must be a valid URL. Must not be greater than 2048 characters.'
example: 'https://gaylord.com/modi-deserunt-aut-ab-provident-perspiciatis.html'
nullable: true
event_online_url:
type: string
description: 'Must be a valid URL. Must not be greater than 2048 characters.'
example: 'http://www.cruickshank.com/adipisci-quidem-nostrum-qui-commodi-incidunt-iure'
nullable: true
summary:
type: string
description: 'Must not be greater than 1000 characters.'
example: r
nullable: true
timezone:
type: string
description: 'Must be a valid time zone, such as Africa/Accra.'
example: Indian/Mahe
is_all_day:
type: boolean
description: ''
example: true
online_access_policy:
type: string
description: ''
example: sent_after_registration
enum:
- public_link
- sent_after_registration
- shared_later
nullable: true
online_access_instructions:
type: string
description: 'Must not be greater than 2000 characters.'
example: i
nullable: true
attendance_type:
type: string
description: ''
example: free_registration_required
enum:
- free_no_registration
- free_registration_required
- paid
nullable: true
registration_url:
type: string
description: 'Must be a valid URL. Must not be greater than 2048 characters.'
example: 'http://fritsch.com/autem-et-consequatur-aut-dolores-enim-non-facere-tempora'
nullable: true
admission_availability:
type: string
description: ''
example: sold_out
enum:
- available
- coming_soon
- closed
- sold_out
nullable: true
pricing_mode:
type: string
description: ''
example: multiple
enum:
- fixed
- multiple
- varies
nullable: true
purchase_method:
type: string
description: ''
example: external_url
enum:
- external_url
- pay_at_venue
- contact_organizer
nullable: true
purchase_instructions:
type: string
description: 'Must not be greater than 1000 characters.'
example: t
nullable: true
ticket_provider:
type: string
description: 'Must not be greater than 255 characters.'
example: u
nullable: true
ticket_release_at:
type: string
description: 'Must be a valid date.'
example: '2026-09-04T20:26:38'
nullable: true
ticket_availability_message:
type: string
description: 'Must not be greater than 1000 characters.'
example: j
nullable: true
latitude:
type: number
description: 'Must be between -90 and 90.'
example: -90
nullable: true
longitude:
type: number
description: 'Must be between -180 and 180.'
example: -179
nullable: true
required:
- event_start_date
- event_end_date
- event_start_time
- event_end_time
- timezone
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing_slug}/event/{event_slug}/update':
patch:
summary: 'Update the specified event details.'
operationId: updateTheSpecifiedEventDetails
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
event_start_date:
type: string
description: 'Must be a valid date.'
example: '2026-09-04T20:26:38'
event_end_date:
type: string
description: 'Must be a valid date. Must be a date after or equal to event_start_date.'
example: '2052-09-27'
event_start_time:
type: string
description: 'Must be a valid date in the format H:i.'
example: '20:26'
nullable: true
event_end_time:
type: string
description: 'Must be a valid date in the format H:i.'
example: '20:26'
nullable: true
event_venue:
type: string
description: 'Must not be greater than 255 characters.'
example: 'n'
nullable: true
event_venue_address:
type: string
description: 'Must not be greater than 500 characters.'
example: g
nullable: true
event_city:
type: string
description: 'Must not be greater than 255 characters.'
example: z
nullable: true
event_country:
type: string
description: 'Must not be greater than 255 characters.'
example: m
nullable: true
event_type:
type: string
description: ''
example: multi_days
enum:
- 1_day
- 2_days
- multi_days
nullable: true
event_location:
type: string
description: ''
example: online
enum:
- in_person
- online
- hybrid
nullable: true
event_price:
type: number
description: 'Must be at least 0.'
example: 8
nullable: true
event_currency:
type: string
description: 'Must be 3 characters.'
example: yvd
nullable: true
event_ticket_url:
type: string
description: 'Must be a valid URL. Must not be greater than 2048 characters.'
example: 'https://gaylord.com/modi-deserunt-aut-ab-provident-perspiciatis.html'
nullable: true
event_online_url:
type: string
description: 'Must be a valid URL. Must not be greater than 2048 characters.'
example: 'http://www.cruickshank.com/adipisci-quidem-nostrum-qui-commodi-incidunt-iure'
nullable: true
summary:
type: string
description: 'Must not be greater than 1000 characters.'
example: r
nullable: true
timezone:
type: string
description: 'Must be a valid time zone, such as Africa/Accra.'
example: Indian/Mahe
nullable: true
is_all_day:
type: boolean
description: ''
example: true
online_access_policy:
type: string
description: ''
example: sent_after_registration
enum:
- public_link
- sent_after_registration
- shared_later
nullable: true
online_access_instructions:
type: string
description: 'Must not be greater than 2000 characters.'
example: i
nullable: true
attendance_type:
type: string
description: ''
example: paid
enum:
- free_no_registration
- free_registration_required
- paid
nullable: true
registration_url:
type: string
description: 'Must be a valid URL. Must not be greater than 2048 characters.'
example: 'http://fritsch.com/autem-et-consequatur-aut-dolores-enim-non-facere-tempora'
nullable: true
admission_availability:
type: string
description: ''
example: closed
enum:
- available
- coming_soon
- closed
- sold_out
nullable: true
pricing_mode:
type: string
description: ''
example: multiple
enum:
- fixed
- multiple
- varies
nullable: true
purchase_method:
type: string
description: ''
example: pay_at_venue
enum:
- external_url
- pay_at_venue
- contact_organizer
nullable: true
purchase_instructions:
type: string
description: 'Must not be greater than 1000 characters.'
example: t
nullable: true
ticket_provider:
type: string
description: 'Must not be greater than 255 characters.'
example: u
nullable: true
ticket_release_at:
type: string
description: 'Must be a valid date.'
example: '2026-09-04T20:26:38'
nullable: true
ticket_availability_message:
type: string
description: 'Must not be greater than 1000 characters.'
example: j
nullable: true
latitude:
type: number
description: 'Must be between -90 and 90.'
example: -90
nullable: true
longitude:
type: number
description: 'Must be between -180 and 180.'
example: -179
nullable: true
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
-
in: path
name: event_slug
description: 'The slug of the event.'
example: 5F04D4Aq
required: true
schema:
type: string
'/api/event/{event_slug}':
delete:
summary: 'Remove the specified event details.'
operationId: removeTheSpecifiedEventDetails
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: event_slug
description: 'The slug of the event.'
example: 5F04D4Aq
required: true
schema:
type: string
'/api/listing/{listing_slug}/event/{event_slug}/ticket-types':
get:
summary: "List all ticket types (including inactive ones) for the owner's editor."
operationId: listAllTicketTypesincludingInactiveOnesForTheOwnersEditor
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: ''
operationId: postApiListingListing_slugEventEvent_slugTicketTypes
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 100 characters.'
example: b
description:
type: string
description: 'Must not be greater than 500 characters.'
example: 'Et animi quos velit et fugiat.'
nullable: true
price:
type: number
description: 'Must be at least 0.'
example: 42
required:
- name
- price
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
-
in: path
name: event_slug
description: 'The slug of the event.'
example: 5F04D4Aq
required: true
schema:
type: string
'/api/ticket-types/{ticketType_slug}':
put:
summary: ''
operationId: putApiTicketTypesTicketType_slug
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 100 characters.'
example: b
description:
type: string
description: 'Must not be greater than 500 characters.'
example: 'Et animi quos velit et fugiat.'
nullable: true
price:
type: number
description: 'Must be at least 0.'
example: 42
sort_order:
type: integer
description: 'Must be at least 0.'
example: 37
is_active:
type: boolean
description: ''
example: false
security: []
delete:
summary: "Soft-deactivate — ticket types are never hard-deleted so a listing that\nhas already been reviewed/approved doesn't silently lose ticket-type\nhistory when an organizer edits it."
operationId: softDeactivateTicketTypesAreNeverHardDeletedSoAListingThatHasAlreadyBeenReviewedapprovedDoesntSilentlyLoseTicketTypeHistoryWhenAnOrganizerEditsIt
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: ticketType_slug
description: 'The slug of the ticketType.'
example: architecto
required: true
schema:
type: string
/api/businesses:
get:
summary: ''
operationId: getApiBusinesses
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/communities:
get:
summary: ''
operationId: getApiCommunities
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/events:
get:
summary: ''
operationId: getApiEvents
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/discover_events:
get:
summary: ''
operationId: getApiDiscover_events
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/admin/all_listings:
get:
summary: ''
operationId: getApiAdminAll_listings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/admin/approved_listings:
get:
summary: ''
operationId: getApiAdminApproved_listings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/admin/drafted_listings:
get:
summary: ''
operationId: getApiAdminDrafted_listings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/admin/rejected_listings:
get:
summary: ''
operationId: getApiAdminRejected_listings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/admin/pending_listings:
get:
summary: ''
operationId: getApiAdminPending_listings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/admin/suspended_listings:
get:
summary: ''
operationId: getApiAdminSuspended_listings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/admin/archived_listings:
get:
summary: ''
operationId: getApiAdminArchived_listings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/admin/listings/{listingSlug}':
get:
summary: ''
operationId: getApiAdminListingsListingSlug
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listingSlug
description: ''
example: gina-s
required: true
schema:
type: string
'/api/admin/listings/{listingSlug}/restore':
patch:
summary: ''
operationId: patchApiAdminListingsListingSlugRestore
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listingSlug
description: ''
example: gina-s
required: true
schema:
type: string
/api/admin/search:
get:
summary: ''
operationId: getApiAdminSearch
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/listings_by_geolocation:
get:
summary: ''
operationId: getApiListings_by_geolocation
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/category_landing:
get:
summary: ''
operationId: getApiCategory_landing
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/top_listings_by_category_and_geolocation:
get:
summary: ''
operationId: getApiTop_listings_by_category_and_geolocation
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/all_listings_by_category_and_geolocation:
get:
summary: ''
operationId: getApiAll_listings_by_category_and_geolocation
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/top_listings_by_country_and_category:
get:
summary: ''
operationId: getApiTop_listings_by_country_and_category
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/all_listings_by_country_and_category:
get:
summary: ''
operationId: getApiAll_listings_by_country_and_category
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/search:
get:
summary: ''
operationId: getApiSearch
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/listing/{listing}/claim_eligibility':
get:
summary: ''
operationId: getApiListingListingClaim_eligibility
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
/api/my_claims:
get:
summary: ''
operationId: getApiMy_claims
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/claims/{claimCase}':
get:
summary: ''
operationId: getApiClaimsClaimCase
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: claimCase
description: ''
example: architecto
required: true
schema:
type: string
'/api/claims/{claimCase}/evidence/{evidence}/signed_url':
get:
summary: ''
operationId: getApiClaimsClaimCaseEvidenceEvidenceSigned_url
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: claimCase
description: ''
example: architecto
required: true
schema:
type: string
-
in: path
name: evidence
description: 'The evidence.'
example: architecto
required: true
schema:
type: string
'/api/listing/{listing}/claims/email':
post:
summary: ''
operationId: postApiListingListingClaimsEmail
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/claims/email/resend':
post:
summary: ''
operationId: postApiListingListingClaimsEmailResend
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/claims/email/verify':
post:
summary: ''
operationId: postApiListingListingClaimsEmailVerify
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/claims/document':
post:
summary: ''
operationId: postApiListingListingClaimsDocument
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/claims/{claimCase}/evidence':
post:
summary: ''
operationId: postApiClaimsClaimCaseEvidence
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: claimCase
description: ''
example: architecto
required: true
schema:
type: string
'/api/claims/{claimCase}/withdraw':
post:
summary: ''
operationId: postApiClaimsClaimCaseWithdraw
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: claimCase
description: ''
example: architecto
required: true
schema:
type: string
'/api/listing/{listing}/claim_by_email':
post:
summary: ''
operationId: postApiListingListingClaim_by_email
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/verify_claim_by_email':
post:
summary: ''
operationId: postApiListingListingVerify_claim_by_email
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/claim':
post:
summary: ''
operationId: postApiListingListingClaim
description: ''
parameters: []
responses: { }
tags:
- Endpoints
deprecated: true
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing_slug}/new_listing_mail':
post:
summary: 'Compatibility alias for the V1 submission URL.'
operationId: compatibilityAliasForTheV1SubmissionURL
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
admin_past_event_override:
type: boolean
description: ''
example: true
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
/api/admin/claims:
get:
summary: ''
operationId: getApiAdminClaims
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/admin/claims/{claimCase}':
get:
summary: ''
operationId: getApiAdminClaimsClaimCase
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: claimCase
description: ''
example: architecto
required: true
schema:
type: string
'/api/admin/claims/{claimCase}/approve':
patch:
summary: ''
operationId: patchApiAdminClaimsClaimCaseApprove
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: claimCase
description: ''
example: architecto
required: true
schema:
type: string
'/api/admin/claims/{claimCase}/reject':
patch:
summary: ''
operationId: patchApiAdminClaimsClaimCaseReject
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: claimCase
description: ''
example: architecto
required: true
schema:
type: string
'/api/admin/claims/{claimCase}/request_evidence':
patch:
summary: ''
operationId: patchApiAdminClaimsClaimCaseRequest_evidence
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: claimCase
description: ''
example: architecto
required: true
schema:
type: string
'/api/admin/claims/{claimCase}/evidence/{evidence}/signed_url':
get:
summary: ''
operationId: getApiAdminClaimsClaimCaseEvidenceEvidenceSigned_url
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: claimCase
description: ''
example: architecto
required: true
schema:
type: string
-
in: path
name: evidence
description: 'The evidence.'
example: architecto
required: true
schema:
type: string
/api/claims:
get:
summary: ''
operationId: getApiClaims
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/admin/listings/{listing_slug}/stewardship/assign':
post:
summary: ''
operationId: postApiAdminListingsListing_slugStewardshipAssign
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
agent_id:
type: integer
description: 'The id of an existing record in the users table.'
example: 16
required:
- agent_id
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
'/api/admin/listings/{listing_slug}/stewardship/reassign':
post:
summary: ''
operationId: postApiAdminListingsListing_slugStewardshipReassign
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
agent_id:
type: integer
description: 'The id of an existing record in the users table.'
example: 16
required:
- agent_id
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
'/api/admin/listings/{listing_slug}/stewardship/end':
post:
summary: ''
operationId: postApiAdminListingsListing_slugStewardshipEnd
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
/api/admin/stewardship/unassigned_queue:
get:
summary: ''
operationId: getApiAdminStewardshipUnassigned_queue
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: 'Must not be greater than 100 characters.'
example: b
nullable: true
page:
type: integer
description: 'Must be at least 1.'
example: 22
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 50.'
example: 7
security: []
/api/admin/stewardship/eligible_agents:
get:
summary: ''
operationId: getApiAdminStewardshipEligible_agents
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/admin/revisions:
get:
summary: ''
operationId: getApiAdminRevisions
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: 'Must not be greater than 100 characters.'
example: b
nullable: true
page:
type: integer
description: 'Must be at least 1.'
example: 22
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 50.'
example: 7
security: []
'/api/admin/revisions/{revision}/decision':
patch:
summary: ''
operationId: patchApiAdminRevisionsRevisionDecision
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: revision
description: 'The revision.'
example: architecto
required: true
schema:
type: string
/api/admin/diagnostics/user_id_invariant:
get:
summary: ''
operationId: getApiAdminDiagnosticsUser_id_invariant
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/admin/duplicate_assessments/{assessment}/resolve':
patch:
summary: ''
operationId: patchApiAdminDuplicate_assessmentsAssessmentResolve
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: assessment
description: ''
example: architecto
required: true
schema:
type: string
/api/admin/duplicate_assessments:
get:
summary: ''
operationId: getApiAdminDuplicate_assessments
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
q:
type: string
description: 'Must not be greater than 100 characters.'
example: b
nullable: true
page:
type: integer
description: 'Must be at least 1.'
example: 22
per_page:
type: integer
description: 'Must be at least 1. Must not be greater than 50.'
example: 7
security: []
/api/agent/listings/duplicate_preflight:
post:
summary: ''
operationId: postApiAgentListingsDuplicate_preflight
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
/api/agent/listings:
get:
summary: ''
operationId: getApiAgentListings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/agent/metrics:
get:
summary: ''
operationId: getApiAgentMetrics
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/agent/owned_listings:
get:
summary: ''
operationId: getApiAgentOwned_listings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/listing/{listing}/management':
get:
summary: ''
operationId: getApiListingListingManagement
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/verify_listing':
post:
summary: ''
operationId: postApiListingListingVerify_listing
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
put:
summary: ''
operationId: putApiListingListingVerify_listing
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/resend_otp':
post:
summary: ''
operationId: postApiListingListingResend_otp
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing}/socials':
get:
summary: ''
operationId: getApiListingListingSocials
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: ''
operationId: postApiListingListingSocials
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
facebook:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: b
nullable: true
twitter:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: 'n'
nullable: true
whatsapp:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: g
nullable: true
instagram:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: z
nullable: true
tiktok:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: m
nullable: true
youtube:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: i
nullable: true
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing_slug}/socials/{social_slug}':
put:
summary: ''
operationId: putApiListingListing_slugSocialsSocial_slug
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
facebook:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: b
nullable: true
twitter:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: 'n'
nullable: true
instagram:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: g
nullable: true
whatsapp:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: z
nullable: true
tiktok:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: m
nullable: true
youtube:
type: string
description: 'Must be a valid URL. Must not be greater than 255 characters.'
example: i
nullable: true
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
-
in: path
name: social_slug
description: 'The slug of the social.'
example: aM7kz5gK
required: true
schema:
type: string
'/api/listing/socials/{social_slug}':
delete:
summary: ''
operationId: deleteApiListingSocialsSocial_slug
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: social_slug
description: 'The slug of the social.'
example: aM7kz5gK
required: true
schema:
type: string
'/api/listing/{listing_slug}/sources':
get:
summary: ''
operationId: getApiListingListing_slugSources
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: ''
operationId: postApiListingListing_slugSources
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
url:
type: string
description: 'Must not be greater than 4096 characters.'
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
source_type:
type: string
description: ''
example: official_social
enum:
- official_website
- official_social
- government_registry
- reputable_directory
- ticket_platform
- news_source
- other
is_primary:
type: boolean
description: ''
example: true
position:
type: integer
description: 'Must be at least 1. Must not be greater than 5.'
example: 5
required:
- url
- source_type
- is_primary
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing_slug}/sources/{source_id}':
patch:
summary: ''
operationId: patchApiListingListing_slugSourcesSource_id
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
url:
type: string
description: 'Must not be greater than 4096 characters.'
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
source_type:
type: string
description: ''
example: news_source
enum:
- official_website
- official_social
- government_registry
- reputable_directory
- ticket_platform
- news_source
- other
position:
type: integer
description: 'Must be at least 1. Must not be greater than 5.'
example: 5
security: []
delete:
summary: ''
operationId: deleteApiListingListing_slugSourcesSource_id
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
-
in: path
name: source_id
description: 'The ID of the source.'
example: 1
required: true
schema:
type: integer
'/api/listing/{listing_slug}/internal_notes':
get:
summary: ''
operationId: getApiListingListing_slugInternal_notes
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: ''
operationId: postApiListingListing_slugInternal_notes
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
body:
type: string
description: 'Must not be greater than 10000 characters.'
example: b
required:
- body
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
'/api/listing/{listing_slug}/internal_notes/{note_id}':
patch:
summary: ''
operationId: patchApiListingListing_slugInternal_notesNote_id
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
body:
type: string
description: 'Must not be greater than 10000 characters.'
example: b
required:
- body
security: []
delete:
summary: ''
operationId: deleteApiListingListing_slugInternal_notesNote_id
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
-
in: path
name: note_id
description: 'The ID of the note.'
example: 1
required: true
schema:
type: integer
'/api/admin/internal_notes/{note_id}/legal_hold':
patch:
summary: ''
operationId: patchApiAdminInternal_notesNote_idLegal_hold
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
legal_hold:
type: boolean
description: ''
example: false
required:
- legal_hold
security: []
parameters:
-
in: path
name: note_id
description: 'The ID of the note.'
example: 1
required: true
schema:
type: integer
'/api/listings/{listing}/services':
get:
summary: 'List services belonging to a specific listing.'
operationId: listServicesBelongingToASpecificListing
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: 'Create a service, attaching an already-uploaded S3 image by key.'
operationId: createAServiceAttachingAnAlreadyUploadedS3ImageByKey
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
image_key:
type: string
description: ''
example: architecto
nullable: true
required:
- name
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/listings/{listing}/services/presign':
post:
summary: 'Generate a presigned S3 URL for direct client-side upload.'
operationId: generateAPresignedS3URLForDirectClientSideUpload
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
filename:
type: string
description: ''
example: architecto
mime_type:
type: string
description: ''
example: image/gif
enum:
- image/jpeg
- image/png
- image/gif
- image/webp
size:
type: string
description: ''
example: null
required:
- filename
- mime_type
security: []
parameters:
-
in: path
name: listing
description: 'The listing.'
example: gina-s
required: true
schema:
type: string
'/api/services/{service_slug}':
put:
summary: 'Update a service, optionally swapping its image via an already-uploaded S3 key.'
operationId: updateAServiceOptionallySwappingItsImageViaAnAlreadyUploadedS3Key
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
image_key:
type: string
description: ''
example: architecto
nullable: true
security: []
delete:
summary: ''
operationId: deleteApiServicesService_slug
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: service_slug
description: 'The slug of the service.'
example: personal-shopper
required: true
schema:
type: string
'/api/listing/{listing_slug}/ratings':
get:
summary: 'Visible ratings for a single listing — public listing page.'
operationId: visibleRatingsForASingleListingPublicListingPage
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
/api/ratings:
get:
summary: 'All ratings for admin moderation dashboard — visible and hidden.'
operationId: allRatingsForAdminModerationDashboardVisibleAndHidden
description: 'Route is guarded by admin middleware so only admins reach this.'
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/my_ratings:
get:
summary: "The authenticated user's own ratings."
operationId: theAuthenticatedUsersOwnRatings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/rating/{rating_slug}':
get:
summary: 'A single rating by slug — admin detail page.'
operationId: aSingleRatingBySlugAdminDetailPage
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
delete:
summary: 'Delete a rating — owner or admin only.'
operationId: deleteARatingOwnerOrAdminOnly
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: rating_slug
description: 'The slug of the rating.'
example: jIApEeRZ
required: true
schema:
type: string
'/api/listing/{listing_slug}/rating':
post:
summary: 'Submit a new rating.'
operationId: submitANewRating
description: 'Rules: authenticated, not own listing, max 3 active per listing, max 3 per day globally.'
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
rating:
type: integer
description: 'Must be at least 1. Must not be greater than 5.'
example: 1
comment:
type: string
description: 'Must be at least 20 characters. Must not be greater than 500 characters.'
example: 'n'
required:
- rating
- comment
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
'/api/rating/{rating_slug}/reply':
post:
summary: 'Vendor posts a single reply to a review on their listing.'
operationId: vendorPostsASingleReplyToAReviewOnTheirListing
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
vendor_reply:
type: string
description: 'Must be at least 1 character. Must not be greater than 500 characters.'
example: b
required:
- vendor_reply
security: []
parameters:
-
in: path
name: rating_slug
description: 'The slug of the rating.'
example: jIApEeRZ
required: true
schema:
type: string
/api/vendor/reviews:
get:
summary: 'All ratings across every listing owned by the authenticated vendor.'
operationId: allRatingsAcrossEveryListingOwnedByTheAuthenticatedVendor
description: 'Includes soft-deleted reviews for historical/performance record.'
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/rating/{rating_slug}/hide':
patch:
summary: 'Admin hides a review and its reply from the public.'
operationId: adminHidesAReviewAndItsReplyFromThePublic
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
moderation_reason:
type: string
description: 'Must not be greater than 500 characters.'
example: b
nullable: true
security: []
parameters:
-
in: path
name: rating_slug
description: 'The slug of the rating.'
example: jIApEeRZ
required: true
schema:
type: string
'/api/rating/{rating_slug}/unhide':
patch:
summary: 'Admin restores a previously hidden review.'
operationId: adminRestoresAPreviouslyHiddenReview
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: rating_slug
description: 'The slug of the rating.'
example: jIApEeRZ
required: true
schema:
type: string
/api/vendor_ratings:
get:
summary: ''
operationId: getApiVendor_ratings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/listings/{listing_slug}/bookmark/toggle':
post:
summary: 'Toggle bookmark for a listing.'
operationId: toggleBookmarkForAListing
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
/api/my_bookmarks:
get:
summary: "Get user's bookmarked listings."
operationId: getUsersBookmarkedListings
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/bookmark/{bookmark}':
delete:
summary: 'Remove a bookmark.'
operationId: removeABookmark
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: bookmark
description: 'The bookmark.'
example: architecto
required: true
schema:
type: string
'/api/listing/{listing_slug}/views':
get:
summary: 'Get view statistics for a listing (shows both authenticated and guest views)'
operationId: getViewStatisticsForAListingshowsBothAuthenticatedAndGuestViews
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: listing_slug
description: 'The slug of the listing.'
example: gina-s
required: true
schema:
type: string
/api/curated_collections:
get:
summary: 'Public index — returns published, non-expired collections, optionally filtered by country.'
operationId: publicIndexReturnsPublishedNonExpiredCollectionsOptionallyFilteredByCountry
description: 'Caches per-country for 30 minutes.'
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: ''
operationId: postApiCurated_collections
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'Must not be greater than 255 characters.'
example: b
subtitle:
type: string
description: ''
example: architecto
nullable: true
country:
type: string
description: 'Must not be greater than 100 characters.'
example: 'n'
nullable: true
sort_order:
type: integer
description: 'Must be at least 0.'
example: 84
is_published:
type: boolean
description: ''
example: true
expires_at:
type: string
description: 'Must be a valid date. Must be a date after now.'
example: '2052-09-28'
nullable: true
required:
- title
- sort_order
security: []
/api/curated_collections/listing-search:
get:
summary: 'Search approved listings for the admin collection picker.'
operationId: searchApprovedListingsForTheAdminCollectionPicker
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/curated_collections/{collection_id}':
get:
summary: ''
operationId: getApiCurated_collectionsCollection_id
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
put:
summary: ''
operationId: putApiCurated_collectionsCollection_id
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'Must not be greater than 255 characters.'
example: b
subtitle:
type: string
description: ''
example: architecto
nullable: true
country:
type: string
description: 'Must not be greater than 100 characters.'
example: 'n'
nullable: true
sort_order:
type: integer
description: 'Must be at least 0.'
example: 84
is_published:
type: boolean
description: ''
example: false
expires_at:
type: string
description: 'Must be a valid date.'
example: '2026-09-04T20:26:39'
nullable: true
security: []
delete:
summary: ''
operationId: deleteApiCurated_collectionsCollection_id
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: collection_id
description: 'The ID of the collection.'
example: 16
required: true
schema:
type: integer
'/api/curated_collections/{collection_id}/items':
post:
summary: ''
operationId: postApiCurated_collectionsCollection_idItems
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
listing_id:
type: integer
description: 'The id of an existing record in the listings table.'
example: 16
required:
- listing_id
security: []
parameters:
-
in: path
name: collection_id
description: 'The ID of the collection.'
example: 16
required: true
schema:
type: integer
'/api/curated_collections/{collection_id}/items/{item_id}':
delete:
summary: ''
operationId: deleteApiCurated_collectionsCollection_idItemsItem_id
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: collection_id
description: 'The ID of the collection.'
example: 16
required: true
schema:
type: integer
-
in: path
name: item_id
description: 'The ID of the item.'
example: 16
required: true
schema:
type: integer
'/api/curated_collections/{collection_id}/items/reorder':
patch:
summary: ''
operationId: patchApiCurated_collectionsCollection_idItemsReorder
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
items:
type: array
description: 'Must have at least 1 items.'
example:
- []
items:
type: object
properties:
id:
type: integer
description: 'The id of an existing record in the collection_items table.'
example: 16
sort_order:
type: integer
description: 'Must be at least 0.'
example: 39
required:
- id
- sort_order
required:
- items
security: []
parameters:
-
in: path
name: collection_id
description: 'The ID of the collection.'
example: 16
required: true
schema:
type: integer
/api/admin/curated_collections:
get:
summary: 'Admin index — returns all collections regardless of published state.'
operationId: adminIndexReturnsAllCollectionsRegardlessOfPublishedState
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/blogs:
get:
summary: 'Display a listing of blogs.'
operationId: displayAListingOfBlogs
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: 'Store a newly created blog.'
operationId: storeANewlyCreatedBlog
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
title:
type: string
description: 'Must not be greater than 255 characters.'
example: b
content:
type: string
description: ''
example: architecto
excerpt:
type: string
description: 'Must not be greater than 500 characters.'
example: 'n'
nullable: true
featured_image:
type: string
format: binary
description: 'Must be an image. Must not be greater than 5120 kilobytes.'
nullable: true
category_id:
type: string
description: 'The id of an existing record in the blog_categories table.'
example: null
nullable: true
tags:
type: array
description: 'Must not be greater than 50 characters.'
example:
- g
items:
type: string
status:
type: string
description: ''
example: published
enum:
- draft
- published
meta_data:
type: object
description: ''
example: null
properties: { }
nullable: true
is_featured:
type: boolean
description: ''
example: false
allow_comments:
type: boolean
description: ''
example: true
images:
type: array
description: 'Must be an image. Must not be greater than 5120 kilobytes.'
items:
type: string
format: binary
nullable: true
required:
- title
- content
- status
security: []
/api/blogs/search:
get:
summary: 'Search blogs.'
operationId: searchBlogs
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/blogs/stats:
get:
summary: 'Get blog statistics.'
operationId: getBlogStatistics
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
'/api/blogs/{slug}':
get:
summary: 'Display the specified blog.'
operationId: displayTheSpecifiedBlog
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: slug
description: 'The slug of the blog.'
example: architecto
required: true
schema:
type: string
/api/blog-categories:
get:
summary: 'Display all categories.'
operationId: displayAllCategories
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: 'Store a new category.'
operationId: storeANewCategory
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
example: b
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
featured_image:
type: string
format: binary
description: 'Must be an image. Must not be greater than 2048 kilobytes.'
nullable: true
is_active:
type: boolean
description: ''
example: false
sort_order:
type: integer
description: ''
example: 16
meta_data:
type: object
description: ''
example: null
properties: { }
nullable: true
required:
- name
security: []
'/api/blog-categories/{slug}':
get:
summary: 'Display category with its blogs.'
operationId: displayCategoryWithItsBlogs
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
parameters:
-
in: path
name: slug
description: 'The slug of the blog category.'
example: architecto
required: true
schema:
type: string
'/api/blogs/{blog_id}/comments':
get:
summary: 'Get comments for a blog.'
operationId: getCommentsForABlog
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: 'Store a new comment.'
operationId: storeANewComment
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
comment:
type: string
description: 'Must not be greater than 2000 characters.'
example: b
parent_id:
type: string
description: 'The id of an existing record in the blog_comments table.'
example: null
nullable: true
required:
- comment
security: []
parameters:
-
in: path
name: blog_id
description: 'The ID of the blog.'
example: 16
required: true
schema:
type: integer
'/api/blogs/{blog_id}':
put:
summary: 'Update the specified blog.'
operationId: updateTheSpecifiedBlog
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
multipart/form-data:
schema:
type: object
properties:
title:
type: string
description: 'Must not be greater than 255 characters.'
example: b
content:
type: string
description: ''
example: architecto
excerpt:
type: string
description: 'Must not be greater than 500 characters.'
example: 'n'
nullable: true
featured_image:
type: string
format: binary
description: 'Must be an image. Must not be greater than 5120 kilobytes.'
nullable: true
category_id:
type: string
description: 'The id of an existing record in the blog_categories table.'
example: null
nullable: true
tags:
type: array
description: 'Must not be greater than 50 characters.'
example:
- g
items:
type: string
status:
type: string
description: ''
example: archived
enum:
- draft
- published
- archived
meta_data:
type: object
description: ''
example: null
properties: { }
nullable: true
is_featured:
type: boolean
description: ''
example: false
allow_comments:
type: boolean
description: ''
example: true
images:
type: array
description: 'Must be an image. Must not be greater than 5120 kilobytes.'
items:
type: string
format: binary
nullable: true
security: []
delete:
summary: 'Remove the specified blog.'
operationId: removeTheSpecifiedBlog
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: blog_id
description: 'The ID of the blog.'
example: 16
required: true
schema:
type: integer
'/api/blogs/{blog_id}/like':
post:
summary: 'Like/unlike a blog.'
operationId: likeunlikeABlog
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: blog_id
description: 'The ID of the blog.'
example: 16
required: true
schema:
type: integer
'/api/blog-categories/{category_id}':
put:
summary: 'Update category.'
operationId: updateCategory
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
multipart/form-data:
schema:
type: object
properties:
name:
type: string
description: ''
example: null
description:
type: string
description: ''
example: 'Eius et animi quos velit et.'
nullable: true
featured_image:
type: string
format: binary
description: 'Must be an image. Must not be greater than 2048 kilobytes.'
nullable: true
is_active:
type: boolean
description: ''
example: false
sort_order:
type: integer
description: ''
example: 16
meta_data:
type: object
description: ''
example: null
properties: { }
nullable: true
security: []
delete:
summary: 'Delete category.'
operationId: deleteCategory
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: category_id
description: 'The ID of the category.'
example: 16
required: true
schema:
type: integer
'/api/blog-comments/{comment_id}':
put:
summary: 'Update a comment.'
operationId: updateAComment
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
comment:
type: string
description: 'Must not be greater than 2000 characters.'
example: b
required:
- comment
security: []
delete:
summary: 'Delete a comment.'
operationId: deleteAComment
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: comment_id
description: 'The ID of the comment.'
example: 16
required: true
schema:
type: integer
'/api/blog-comments/{comment_id}/like':
post:
summary: 'Like a comment.'
operationId: likeAComment
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: comment_id
description: 'The ID of the comment.'
example: 16
required: true
schema:
type: integer
'/api/blog-comments/{comment_id}/moderate':
post:
summary: 'Moderate comment (admin only).'
operationId: moderateCommentadminOnly
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: ''
example: spam
enum:
- approved
- spam
required:
- status
security: []
parameters:
-
in: path
name: comment_id
description: 'The ID of the comment.'
example: 16
required: true
schema:
type: integer
/api/faqs:
get:
summary: 'Public Page: List only visible FAQs'
operationId: publicPageListOnlyVisibleFAQs
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
/api/admin/faqs:
get:
summary: 'Admin Dashboard: List all FAQs (visible and hidden)'
operationId: adminDashboardListAllFAQsvisibleAndHidden
description: ''
parameters: []
responses:
503:
description: ''
content:
application/json:
schema:
type: object
example:
message: 'Service Unavailable'
properties:
message:
type: string
example: 'Service Unavailable'
tags:
- Endpoints
security: []
post:
summary: 'Create a new FAQ'
operationId: createANewFAQ
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
question:
type: string
description: 'Must not be greater than 255 characters.'
example: b
answer:
type: string
description: ''
example: architecto
required:
- question
- answer
security: []
'/api/admin/faqs/{faq_slug}':
put:
summary: 'Update an existing FAQ'
operationId: updateAnExistingFAQ
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
question:
type: string
description: 'Must not be greater than 255 characters.'
example: b
answer:
type: string
description: ''
example: architecto
security: []
delete:
summary: 'Permanently Delete an FAQ'
operationId: permanentlyDeleteAnFAQ
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: faq_slug
description: 'The slug of the faq.'
example: what-is-the-mefie-directory
required: true
schema:
type: string
'/api/admin/faqs/{faq_slug}/toggle-status':
patch:
summary: 'Toggle Visibility (Hide / Show)'
operationId: toggleVisibilityHideShow
description: ''
parameters: []
responses: { }
tags:
- Endpoints
security: []
parameters:
-
in: path
name: faq_slug
description: 'The slug of the faq.'
example: what-is-the-mefie-directory
required: true
schema:
type: string