Initialize Tinder API Wrapper with server configuration and Docker setup
This commit is contained in:
472
docs/api.yaml
Normal file
472
docs/api.yaml
Normal file
@@ -0,0 +1,472 @@
|
||||
openapi: 3.1.0
|
||||
info:
|
||||
title: Tinder API
|
||||
description: >
|
||||
This is an OpenAPI specification for a subset of the Tinder API endpoints.
|
||||
It covers basic functionality including authentication, user actions (like/pass),
|
||||
and recommendations.
|
||||
version: "1.0.0"
|
||||
servers:
|
||||
- url: https://tinder.cloonar.com
|
||||
paths:
|
||||
/like/{user_id}:
|
||||
get:
|
||||
operationId: likeUser
|
||||
summary: Like a user
|
||||
description: >
|
||||
Call this endpoint to "like" a user. In the Tinder app the like action is performed
|
||||
when you swipe right or tap the heart.
|
||||
parameters:
|
||||
- name: user_id
|
||||
in: path
|
||||
description: The Tinder user ID of the profile to like.
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: Successful like response.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
match:
|
||||
type: boolean
|
||||
likes_remaining:
|
||||
type: integer
|
||||
X-Padding:
|
||||
type: string
|
||||
default:
|
||||
description: Unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/pass/{user_id}:
|
||||
get:
|
||||
operationId: passUser
|
||||
summary: Pass on a user
|
||||
description: >
|
||||
Call this endpoint to “pass” (dislike) a user. In the Tinder app this action happens
|
||||
when you swipe left or tap the red X.
|
||||
parameters:
|
||||
- name: user_id
|
||||
in: path
|
||||
description: The Tinder user ID of the profile to pass.
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: Successful pass response.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: string
|
||||
description: A status message or code.
|
||||
default:
|
||||
description: Unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/v2/recs/core:
|
||||
get:
|
||||
operationId: getRecsCore
|
||||
summary: Get Recommendations
|
||||
description: >
|
||||
Retrieves a list of recommended Tinder profiles. An optional locale query parameter can be provided.
|
||||
parameters:
|
||||
- name: locale
|
||||
in: query
|
||||
description: Locale for recommendations (e.g. "en").
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: A list of recommended profiles.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
meta:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: integer
|
||||
data:
|
||||
type: object
|
||||
properties:
|
||||
results:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/UserRecommendation'
|
||||
default:
|
||||
description: Unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/v2/auth/sms/send:
|
||||
post:
|
||||
operationId: sendPhoneLogin
|
||||
summary: Send OTP code
|
||||
description: Initiate phone authentication by requesting an OTP code
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
phone_number:
|
||||
type: string
|
||||
description: The phone number to send the OTP to
|
||||
required:
|
||||
- phone_number
|
||||
responses:
|
||||
'200':
|
||||
description: SMS sent successfully
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/AuthResponse'
|
||||
default:
|
||||
$ref: '#/components/responses/Error'
|
||||
|
||||
/v2/auth/sms/validate:
|
||||
post:
|
||||
operationId: validateOTP
|
||||
summary: Validate OTP
|
||||
description: Complete phone authentication by validating the OTP code
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
phone_number:
|
||||
type: string
|
||||
description: The phone number the OTP was sent to
|
||||
otp:
|
||||
type: string
|
||||
description: The OTP code received via SMS
|
||||
required:
|
||||
- phone_number
|
||||
- otp
|
||||
responses:
|
||||
'200':
|
||||
description: OTP validated successfully
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/AuthResponse'
|
||||
default:
|
||||
$ref: '#/components/responses/Error'
|
||||
|
||||
/v2/auth/facebook:
|
||||
post:
|
||||
operationId: facebookAuth
|
||||
summary: Facebook Authentication
|
||||
description: Authenticate using Facebook credentials
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
facebook_id:
|
||||
type: string
|
||||
description: Facebook user ID
|
||||
facebook_token:
|
||||
type: string
|
||||
description: Facebook access token
|
||||
required:
|
||||
- facebook_id
|
||||
- facebook_token
|
||||
responses:
|
||||
'200':
|
||||
description: Facebook authentication successful
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/AuthResponse'
|
||||
default:
|
||||
$ref: '#/components/responses/Error'
|
||||
|
||||
/v2/auth/login/refresh:
|
||||
post:
|
||||
operationId: refreshAuth
|
||||
summary: Refresh Authentication
|
||||
description: Refresh the authentication token using a refresh token
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
refresh_token:
|
||||
type: string
|
||||
description: The refresh token obtained from a previous authentication
|
||||
required:
|
||||
- refresh_token
|
||||
responses:
|
||||
'200':
|
||||
description: Token refreshed successfully
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/AuthResponse'
|
||||
default:
|
||||
$ref: '#/components/responses/Error'
|
||||
|
||||
/v2/profile:
|
||||
get:
|
||||
operationId: getProfile
|
||||
summary: Get User Profile
|
||||
description: Retrieve the authenticated user's profile information
|
||||
security:
|
||||
- BearerAuth: []
|
||||
responses:
|
||||
'200':
|
||||
description: Profile retrieved successfully
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ProfileResponse'
|
||||
default:
|
||||
$ref: '#/components/responses/Error'
|
||||
|
||||
components:
|
||||
schemas:
|
||||
Error:
|
||||
type: object
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
UserRecommendation:
|
||||
type: object
|
||||
properties:
|
||||
type:
|
||||
type: string
|
||||
user:
|
||||
type: object
|
||||
properties:
|
||||
_id:
|
||||
type: string
|
||||
bio:
|
||||
type: string
|
||||
birth_date:
|
||||
type: string
|
||||
format: date-time
|
||||
name:
|
||||
type: string
|
||||
photos:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Photo'
|
||||
gender:
|
||||
type: integer
|
||||
jobs:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
schools:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
instagram:
|
||||
type: object
|
||||
properties:
|
||||
last_fetch_time:
|
||||
type: string
|
||||
format: date-time
|
||||
completed_initial_fetch:
|
||||
type: boolean
|
||||
photos:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/InstagramPhoto'
|
||||
media_count:
|
||||
type: integer
|
||||
profile_picture:
|
||||
type: string
|
||||
facebook:
|
||||
type: object
|
||||
properties:
|
||||
common_connections:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
connection_count:
|
||||
type: integer
|
||||
common_interests:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
spotify:
|
||||
type: object
|
||||
properties:
|
||||
spotify_connected:
|
||||
type: boolean
|
||||
spotify_theme_track:
|
||||
type: object
|
||||
description: Track info (partial schema – extend as needed)
|
||||
distance_mi:
|
||||
type: integer
|
||||
content_hash:
|
||||
type: string
|
||||
s_number:
|
||||
type: integer
|
||||
teaser:
|
||||
type: object
|
||||
properties:
|
||||
type:
|
||||
type: string
|
||||
string:
|
||||
type: string
|
||||
teasers:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
type:
|
||||
type: string
|
||||
string:
|
||||
type: string
|
||||
Photo:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
crop_info:
|
||||
type: object
|
||||
properties:
|
||||
user:
|
||||
type: object
|
||||
properties:
|
||||
width_pct:
|
||||
type: number
|
||||
x_offset_pct:
|
||||
type: number
|
||||
height_pct:
|
||||
type: number
|
||||
y_offset_pct:
|
||||
type: number
|
||||
algo:
|
||||
type: object
|
||||
properties:
|
||||
width_pct:
|
||||
type: number
|
||||
x_offset_pct:
|
||||
type: number
|
||||
height_pct:
|
||||
type: number
|
||||
y_offset_pct:
|
||||
type: number
|
||||
processed_by_bullseye:
|
||||
type: boolean
|
||||
user_customized:
|
||||
type: boolean
|
||||
url:
|
||||
type: string
|
||||
processedFiles:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
url:
|
||||
type: string
|
||||
height:
|
||||
type: integer
|
||||
width:
|
||||
type: integer
|
||||
fileName:
|
||||
type: string
|
||||
extension:
|
||||
type: string
|
||||
main:
|
||||
type: boolean
|
||||
InstagramPhoto:
|
||||
type: object
|
||||
properties:
|
||||
image:
|
||||
type: string
|
||||
thumbnail:
|
||||
type: string
|
||||
ts:
|
||||
type: string
|
||||
link:
|
||||
type: string
|
||||
AuthResponse:
|
||||
type: object
|
||||
properties:
|
||||
meta:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: integer
|
||||
message:
|
||||
type: string
|
||||
data:
|
||||
type: object
|
||||
properties:
|
||||
api_token:
|
||||
type: string
|
||||
description: The authentication token to use for subsequent requests
|
||||
refresh_token:
|
||||
type: string
|
||||
description: Token that can be used to refresh the authentication
|
||||
is_new_user:
|
||||
type: boolean
|
||||
description: Whether this is a new user account
|
||||
sms_sent:
|
||||
type: boolean
|
||||
description: Whether an SMS was sent (for phone authentication)
|
||||
|
||||
ProfileResponse:
|
||||
type: object
|
||||
properties:
|
||||
meta:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: integer
|
||||
data:
|
||||
type: object
|
||||
properties:
|
||||
user:
|
||||
type: object
|
||||
properties:
|
||||
_id:
|
||||
type: string
|
||||
bio:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
|
||||
responses:
|
||||
Error:
|
||||
description: Error response
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
securitySchemes:
|
||||
BearerAuth:
|
||||
type: apiKey
|
||||
in: header
|
||||
name: X-Auth-Token
|
||||
Reference in New Issue
Block a user