OpenAPI Specification
openapi: 3.0.3
info:
title: Gemfury Developer Accounts Versions API
description: 'REST API for managing packages, versions, accounts, members, and tokens hosted on Gemfury. Supports GET, POST, PATCH, PUT, and DELETE methods over HTTPS with JSON payloads.
'
version: '1'
contact:
name: Gemfury Support
url: https://gemfury.com/help/
license:
name: Proprietary
url: https://gemfury.com
servers:
- url: https://api.fury.io/1
description: Gemfury API v1
security:
- bearerAuth: []
tags:
- name: Versions
description: Manage package versions
paths:
/packages/{id}/versions:
get:
operationId: listPackageVersions
summary: List Package Versions
description: Retrieve a paginated list of all versions for a specific package.
tags:
- Versions
parameters:
- $ref: '#/components/parameters/packageId'
- $ref: '#/components/parameters/asParam'
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/perPageParam'
responses:
'200':
description: Paginated list of versions
content:
application/json:
schema:
type: object
properties:
versions:
type: array
items:
$ref: '#/components/schemas/Version'
total:
type: integer
page:
type: integer
per_page:
type: integer
example:
versions:
- id: ver_eb3c12
name: express
version: 4.18.2
prerelease: false
package_id: pkg_eb3c12
kind_key: js
filename: express-4.18.2.tgz
digests:
sha256: abc123
download_url: https://cdn.fury.io/example/express-4.18.2.tgz
created_at: '2023-01-15T12:00:00Z'
total: 1
page: 1
per_page: 20
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/versions:
get:
operationId: listVersions
summary: List Filtered Versions
description: Retrieve a filtered, paginated list of versions by package name and/or version string.
tags:
- Versions
parameters:
- name: name
in: query
description: Package name or KIND:NAME format
required: false
schema:
type: string
example: express
- name: version
in: query
description: Version string to filter by
required: false
schema:
type: string
example: 1.2.3
- $ref: '#/components/parameters/asParam'
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/perPageParam'
responses:
'200':
description: Paginated list of matching versions
content:
application/json:
schema:
type: object
properties:
versions:
type: array
items:
$ref: '#/components/schemas/Version'
total:
type: integer
page:
type: integer
per_page:
type: integer
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/versions/{id}:
get:
operationId: getVersion
summary: Retrieve Version
description: Retrieve details about a specific package version.
tags:
- Versions
parameters:
- $ref: '#/components/parameters/versionId'
- $ref: '#/components/parameters/asParam'
responses:
'200':
description: Version details
content:
application/json:
schema:
$ref: '#/components/schemas/Version'
example:
id: ver_eb3c12
name: express
version: 4.18.2
prerelease: false
package_id: pkg_eb3c12
kind_key: js
filename: express-4.18.2.tgz
digests:
sha256: abc123
download_url: https://cdn.fury.io/example/express-4.18.2.tgz
created_at: '2023-01-15T12:00:00Z'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteVersion
summary: Delete Version
description: Delete a specific package version.
tags:
- Versions
parameters:
- $ref: '#/components/parameters/versionId'
- $ref: '#/components/parameters/asParam'
responses:
'204':
description: Version deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
Version:
type: object
description: A specific version of a package
properties:
id:
type: string
description: Unique identifier for the version
example: ver_eb3c12
name:
type: string
description: Package name
example: express
version:
type: string
description: Version string
example: 4.18.2
prerelease:
type: boolean
description: Whether this is a prerelease version
example: false
package_id:
type: string
description: ID of the parent package
example: pkg_eb3c12
kind_key:
type: string
description: Package ecosystem key
example: js
filename:
type: string
description: File name of the package artifact
example: express-4.18.2.tgz
digests:
type: object
description: Cryptographic hashes of the package artifact
additionalProperties:
type: string
example:
sha256: abc123def456
download_url:
type: string
format: uri
description: Direct download URL for the package artifact
example: https://cdn.fury.io/example/express-4.18.2.tgz
created_at:
type: string
format: date-time
description: Timestamp when the version was uploaded
example: '2023-01-15T12:00:00Z'
Error:
type: object
description: Error response
properties:
error:
type: object
properties:
message:
type: string
description: Human-readable error message
example: Package not found
type:
type: string
description: Error class categorization
example: InputException
parameters:
perPageParam:
name: per_page
in: query
description: Number of items per page
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 20
pageParam:
name: page
in: query
description: Page number for pagination
required: false
schema:
type: integer
minimum: 1
default: 1
versionId:
name: id
in: path
description: Unique version identifier
required: true
schema:
type: string
example: ver_eb3c12
asParam:
name: as
in: query
description: Account context override (username or account ID)
required: false
schema:
type: string
example: nickfury
packageId:
name: id
in: path
description: Unique package identifier or KIND:NAME format (e.g. js:express)
required: true
schema:
type: string
example: pkg_eb3c12
responses:
Unauthorized:
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
message: Authentication required
type: AuthException
NotFound:
description: Referenced object not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
message: Package not found
type: NotFoundException
Forbidden:
description: Insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
message: Insufficient permissions for this request
type: ForbiddenException
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: API token obtained from the Gemfury dashboard