Eshway Certificates API
The Certificates API from Eshway — 4 operation(s) for certificates.
The Certificates API from Eshway — 4 operation(s) for certificates.
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/eshway-com:eshway-com-certificates-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: Fast Certificates API
version: 0.1.0
tags:
- name: Certificates
paths:
/v1/users/{username}/certificates:
get:
tags:
- Certificates
summary: Get User Certificates By Username
description: 'Get all certificate records for a user by username.
This is for public profile pages.
Respects privacy settings.'
operationId: get_user_certificates_by_username_v1_users__username__certificates_get
parameters:
- name: username
in: path
required: true
schema:
type: string
title: Username
- name: authorization
in: header
required: false
schema:
type: string
title: Authorization
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PublicCertificateResponse'
title: Response Get User Certificates By Username V1 Users Username Certificates Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- Certificates
summary: Create Certificate
description: 'Create a new certificate record for a user.
Accepts either a certificate_url OR a file upload (not both).
Sort order is automatically assigned.'
operationId: create_certificate_v1_users__username__certificates_post
security:
- OAuth2PasswordBearer: []
parameters:
- name: username
in: path
required: true
schema:
type: string
title: Username
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/Body_create_certificate_v1_users__username__certificates_post'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CertificateResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/users/{username}/certificates/{certificate_id}:
put:
tags:
- Certificates
summary: Update Certificate
description: 'Update a certificate record.
Supports both field updates and file uploads with automatic cleanup.
When switching from file to URL or uploading new file, old files are automatically deleted.'
operationId: update_certificate_v1_users__username__certificates__certificate_id__put
security:
- OAuth2PasswordBearer: []
parameters:
- name: username
in: path
required: true
schema:
type: string
title: Username
- name: certificate_id
in: path
required: true
schema:
type: integer
title: Certificate Id
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/Body_update_certificate_v1_users__username__certificates__certificate_id__put'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CertificateResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Certificates
summary: Delete Certificate
description: Delete a certificate record.
operationId: delete_certificate_v1_users__username__certificates__certificate_id__delete
security:
- OAuth2PasswordBearer: []
parameters:
- name: username
in: path
required: true
schema:
type: string
title: Username
- name: certificate_id
in: path
required: true
schema:
type: integer
title: Certificate Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/users/{username}/certificates/reorder:
post:
tags:
- Certificates
summary: Reorder Certificates
description: Swap the sort order of two certificate records.
operationId: reorder_certificates_v1_users__username__certificates_reorder_post
security:
- OAuth2PasswordBearer: []
parameters:
- name: username
in: path
required: true
schema:
type: string
title: Username
- name: certificate_id_1
in: query
required: true
schema:
type: integer
description: First certificate ID
title: Certificate Id 1
description: First certificate ID
- name: certificate_id_2
in: query
required: true
schema:
type: integer
description: Second certificate ID
title: Certificate Id 2
description: Second certificate ID
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/users/{username}/certificates/{certificate_id}/download:
get:
tags:
- Certificates
summary: Get Certificate Download Link
description: Get downloadable link for certificate file.
operationId: get_certificate_download_link_v1_users__username__certificates__certificate_id__download_get
security:
- OAuth2PasswordBearer: []
parameters:
- name: username
in: path
required: true
schema:
type: string
title: Username
- name: certificate_id
in: path
required: true
schema:
type: integer
title: Certificate Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
Body_create_certificate_v1_users__username__certificates_post:
properties:
title:
type: string
title: Title
issuing_organization:
anyOf:
- type: string
- type: 'null'
title: Issuing Organization
issue_date:
anyOf:
- type: string
- type: 'null'
title: Issue Date
expiry_date:
anyOf:
- type: string
- type: 'null'
title: Expiry Date
certificate_url:
anyOf:
- type: string
- type: 'null'
title: Certificate Url
credential_id:
anyOf:
- type: string
- type: 'null'
title: Credential Id
description:
anyOf:
- type: string
- type: 'null'
title: Description
file:
anyOf:
- type: string
format: binary
- type: 'null'
title: File
type: object
required:
- title
title: Body_create_certificate_v1_users__username__certificates_post
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
FileType:
type: string
enum:
- pdf
- image
title: FileType
CertificateResponse:
properties:
title:
type: string
title: Title
issuing_organization:
anyOf:
- type: string
- type: 'null'
title: Issuing Organization
issue_date:
anyOf:
- type: string
- type: 'null'
title: Issue Date
expiry_date:
anyOf:
- type: string
- type: 'null'
title: Expiry Date
certificate_url:
anyOf:
- type: string
- type: 'null'
title: Certificate Url
credential_id:
anyOf:
- type: string
- type: 'null'
title: Credential Id
description:
anyOf:
- type: string
- type: 'null'
title: Description
id:
type: integer
title: Id
user_id:
type: integer
title: User Id
file_path:
anyOf:
- type: string
- type: 'null'
title: File Path
file_type:
anyOf:
- $ref: '#/components/schemas/FileType'
- type: 'null'
sort_order:
type: integer
title: Sort Order
created_at:
type: string
format: date-time
title: Created At
updated_at:
type: string
format: date-time
title: Updated At
type: object
required:
- title
- id
- user_id
- sort_order
- created_at
- updated_at
title: CertificateResponse
PublicCertificateResponse:
properties:
id:
type: integer
title: Id
title:
type: string
title: Title
issuing_organization:
anyOf:
- type: string
- type: 'null'
title: Issuing Organization
issue_date:
anyOf:
- type: string
- type: 'null'
title: Issue Date
expiry_date:
anyOf:
- type: string
- type: 'null'
title: Expiry Date
certificate_url:
anyOf:
- type: string
- type: 'null'
title: Certificate Url
file_path:
anyOf:
- type: string
- type: 'null'
title: File Path
file_type:
anyOf:
- $ref: '#/components/schemas/FileType'
- type: 'null'
description:
anyOf:
- type: string
- type: 'null'
title: Description
sort_order:
type: integer
title: Sort Order
type: object
required:
- id
- title
- sort_order
title: PublicCertificateResponse
description: Public certificate response for profile pages - excludes user_id and internal fields
Body_update_certificate_v1_users__username__certificates__certificate_id__put:
properties:
title:
anyOf:
- type: string
- type: 'null'
title: Title
issuing_organization:
anyOf:
- type: string
- type: 'null'
title: Issuing Organization
issue_date:
anyOf:
- type: string
- type: 'null'
title: Issue Date
expiry_date:
anyOf:
- type: string
- type: 'null'
title: Expiry Date
certificate_url:
anyOf:
- type: string
- type: 'null'
title: Certificate Url
credential_id:
anyOf:
- type: string
- type: 'null'
title: Credential Id
description:
anyOf:
- type: string
- type: 'null'
title: Description
file:
anyOf:
- type: string
format: binary
- type: 'null'
title: File
type: object
title: Body_update_certificate_v1_users__username__certificates__certificate_id__put
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
securitySchemes:
OAuth2PasswordBearer:
type: oauth2
flows:
password:
scopes: {}
tokenUrl: token