ClusterHack Profiles API
The profiles API from ClusterHack — 2 operation(s) for profiles.
The profiles API from ClusterHack — 2 operation(s) for profiles.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/clusterhack-dev:clusterhack-dev-profiles-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Clusterhack Dev Profiles API
version: 1.3.0
description: 'Operations tagged profiles across 2 of this provider''s published API definitions: clusterhack-dev-openapi-original.json, clusterhack-dev-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://clusterhack.dev
description: Production. Not stated in the provider spec (no servers[]); the spec is served from https://clusterhack.dev/api/schema/ and its paths are rooted at /api/v1 and /geo-api.
tags:
- name: Profiles
paths:
/api/v1/profiles/:
post:
operationId: profiles_create
tags:
- Profiles
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/ProfileRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/ProfileRequest'
security:
- jwtAuth: []
- tokenAuth: []
- cookieAuth: []
- basicAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Profile'
description: ''
'400':
description: The request body failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
'401':
description: 'Not authenticated. The response carries `WWW-Authenticate: Bearer realm="api"`; obtain or refresh a token and retry.'
headers:
WWW-Authenticate:
description: Always `Bearer realm="api"`.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'403':
description: Authenticated, but not permitted to perform this action on this object.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'429':
description: Rate limit exceeded (see `DEFAULT_THROTTLE_RATES`). `Retry-After` gives the number of seconds to wait.
headers:
Retry-After:
description: Seconds until the caller may retry.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'500':
description: Unhandled server error.
summary: Profiles create
x-summary-source: derived
get:
operationId: profiles_list
parameters:
- name: ordering
required: false
in: query
description: Which field to use when ordering the results.
schema:
type: string
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
tags:
- Profiles
security:
- jwtAuth: []
- tokenAuth: []
- cookieAuth: []
- basicAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedProfileList'
description: ''
'401':
description: 'Not authenticated. The response carries `WWW-Authenticate: Bearer realm="api"`; obtain or refresh a token and retry.'
headers:
WWW-Authenticate:
description: Always `Bearer realm="api"`.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'403':
description: Authenticated, but not permitted to perform this action on this object.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'429':
description: Rate limit exceeded (see `DEFAULT_THROTTLE_RATES`). `Retry-After` gives the number of seconds to wait.
headers:
Retry-After:
description: Seconds until the caller may retry.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'500':
description: Unhandled server error.
summary: Profiles list
x-summary-source: derived
/api/v1/profiles/{id}/:
delete:
operationId: profiles_destroy
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this User Profile.
required: true
tags:
- Profiles
security:
- jwtAuth: []
- tokenAuth: []
- cookieAuth: []
- basicAuth: []
responses:
'204':
description: No response body
'401':
description: 'Not authenticated. The response carries `WWW-Authenticate: Bearer realm="api"`; obtain or refresh a token and retry.'
headers:
WWW-Authenticate:
description: Always `Bearer realm="api"`.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'403':
description: Authenticated, but not permitted to perform this action on this object.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: No such object, or it is not visible to you.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'429':
description: Rate limit exceeded (see `DEFAULT_THROTTLE_RATES`). `Retry-After` gives the number of seconds to wait.
headers:
Retry-After:
description: Seconds until the caller may retry.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'500':
description: Unhandled server error.
summary: Profiles destroy
x-summary-source: derived
patch:
operationId: profiles_partial_update
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this User Profile.
required: true
tags:
- Profiles
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedProfileRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedProfileRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedProfileRequest'
security:
- jwtAuth: []
- tokenAuth: []
- cookieAuth: []
- basicAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Profile'
description: ''
'400':
description: The request body failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
'401':
description: 'Not authenticated. The response carries `WWW-Authenticate: Bearer realm="api"`; obtain or refresh a token and retry.'
headers:
WWW-Authenticate:
description: Always `Bearer realm="api"`.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'403':
description: Authenticated, but not permitted to perform this action on this object.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: No such object, or it is not visible to you.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'429':
description: Rate limit exceeded (see `DEFAULT_THROTTLE_RATES`). `Retry-After` gives the number of seconds to wait.
headers:
Retry-After:
description: Seconds until the caller may retry.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'500':
description: Unhandled server error.
summary: Profiles partial update
x-summary-source: derived
put:
operationId: profiles_update
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this User Profile.
required: true
tags:
- Profiles
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/ProfileRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/ProfileRequest'
security:
- jwtAuth: []
- tokenAuth: []
- cookieAuth: []
- basicAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Profile'
description: ''
'400':
description: The request body failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
'401':
description: 'Not authenticated. The response carries `WWW-Authenticate: Bearer realm="api"`; obtain or refresh a token and retry.'
headers:
WWW-Authenticate:
description: Always `Bearer realm="api"`.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'403':
description: Authenticated, but not permitted to perform this action on this object.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: No such object, or it is not visible to you.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'429':
description: Rate limit exceeded (see `DEFAULT_THROTTLE_RATES`). `Retry-After` gives the number of seconds to wait.
headers:
Retry-After:
description: Seconds until the caller may retry.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'500':
description: Unhandled server error.
summary: Profiles update
x-summary-source: derived
get:
operationId: profiles_retrieve
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this User Profile.
required: true
tags:
- Profiles
security:
- jwtAuth: []
- tokenAuth: []
- cookieAuth: []
- basicAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Profile'
description: ''
'401':
description: 'Not authenticated. The response carries `WWW-Authenticate: Bearer realm="api"`; obtain or refresh a token and retry.'
headers:
WWW-Authenticate:
description: Always `Bearer realm="api"`.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'403':
description: Authenticated, but not permitted to perform this action on this object.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: No such object, or it is not visible to you.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'429':
description: Rate limit exceeded (see `DEFAULT_THROTTLE_RATES`). `Retry-After` gives the number of seconds to wait.
headers:
Retry-After:
description: Seconds until the caller may retry.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'500':
description: Unhandled server error.
summary: Profiles retrieve
x-summary-source: derived
components:
schemas:
ErrorDetail:
type: object
description: The body DRF returns for a handled error.
properties:
detail:
type: string
description: Human-readable explanation of the failure.
required:
- detail
Profile:
type: object
properties:
id:
type: integer
readOnly: true
date_of_birth:
type:
- string
- 'null'
format: date
photo:
type:
- string
- 'null'
format: uri
mini_description:
type: string
maxLength: 100
full_description:
type: string
maxLength: 1000
phone_number:
type: string
maxLength: 17
website:
oneOf:
- type: string
format: uri
maxLength: 200
- type: string
maxLength: 0
linkedin_link:
type: string
maxLength: 130
github_link:
type: string
maxLength: 130
telegram_name:
type: string
maxLength: 130
user_privacy:
type: boolean
title: Agreement with the user agreement and with the policy regarding the processing of personal data
user:
type: integer
readOnly: true
favorites:
type: array
items:
type: integer
required:
- id
- user
PaginatedProfileList:
type: object
required:
- count
- results
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=4
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=2
results:
type: array
items:
$ref: '#/components/schemas/Profile'
ValidationError:
type: object
description: Field-keyed validation errors. Errors that belong to no single field appear under `non_field_errors`.
additionalProperties:
type: array
items:
type: string
PatchedProfileRequest:
type: object
properties:
date_of_birth:
type:
- string
- 'null'
format: date
photo:
type:
- string
- 'null'
format: binary
mini_description:
type: string
maxLength: 100
full_description:
type: string
maxLength: 1000
phone_number:
type: string
maxLength: 17
website:
oneOf:
- type: string
format: uri
maxLength: 200
- type: string
maxLength: 0
linkedin_link:
type: string
maxLength: 130
github_link:
type: string
maxLength: 130
telegram_name:
type: string
maxLength: 130
user_privacy:
type: boolean
title: Agreement with the user agreement and with the policy regarding the processing of personal data
favorites:
type: array
items:
type: integer
ProfileRequest:
type: object
properties:
date_of_birth:
type:
- string
- 'null'
format: date
photo:
type:
- string
- 'null'
format: binary
mini_description:
type: string
maxLength: 100
full_description:
type: string
maxLength: 1000
phone_number:
type: string
maxLength: 17
website:
oneOf:
- type: string
format: uri
maxLength: 200
- type: string
maxLength: 0
linkedin_link:
type: string
maxLength: 130
github_link:
type: string
maxLength: 130
telegram_name:
type: string
maxLength: 130
user_privacy:
type: boolean
title: Agreement with the user agreement and with the policy regarding the processing of personal data
favorites:
type: array
items:
type: integer
securitySchemes:
basicAuth:
type: http
scheme: basic
cookieAuth:
type: apiKey
in: cookie
name: sessionid
jwtAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Access token from `POST /api/v1/auth/jwt/`, refreshed at `POST /api/v1/auth/jwt/refresh/`. Send as `Authorization: Bearer <access>`.'
tokenAuth:
type: apiKey
in: header
name: Authorization
description: Token-based authentication with required prefix "Token"
x-refined-from:
- clusterhack-dev-openapi-original.json
- clusterhack-dev-openapi.yml