RubyGems Owners API
Endpoints for managing gem ownership, including listing owners, adding and removing owners, and listing gems by owner.
Endpoints for managing gem ownership, including listing owners, adding and removing owners, and listing gems by owner.
openapi: 3.1.0
info:
title: RubyGems Activity Owners API
description: The RubyGems Activity API provides endpoints that return the most recently added and most recently updated gems on RubyGems.org. The latest endpoint returns the 50 gems most recently published to the registry, while the just-updated endpoint returns the 50 most recently modified gems. These endpoints are useful for building activity feeds, monitoring new releases, and tracking changes across the Ruby ecosystem.
version: '1.0'
contact:
name: RubyGems.org Support
url: https://help.rubygems.org
termsOfService: https://rubygems.org/pages/about
servers:
- url: https://rubygems.org/api/v1
description: Production Server
tags:
- name: Owners
description: Endpoints for managing gem ownership, including listing owners, adding and removing owners, and listing gems by owner.
paths:
/owners/{userHandle}/gems.json:
get:
operationId: listGemsByOwner
summary: List Gems By Owner
description: Returns an array of gem objects owned by the specified user, identified by their handle or user ID.
tags:
- Owners
security: []
parameters:
- $ref: '#/components/parameters/userHandle'
responses:
'200':
description: Successful response with array of gems
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Gem'
'404':
description: User not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/gems/{gemName}/owners.json:
get:
operationId: listGemOwners
summary: List Owners Of A Gem
description: Returns an array of owner objects for the specified gem, including their email addresses.
tags:
- Owners
security: []
parameters:
- $ref: '#/components/parameters/gemName'
responses:
'200':
description: Successful response with array of owners
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Owner'
'404':
description: Gem not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/gems/{gemName}/owners:
post:
operationId: addGemOwner
summary: Add A Gem Owner
description: Add a new owner to the specified gem. The new owner is identified by their email address and can be assigned a role.
tags:
- Owners
parameters:
- $ref: '#/components/parameters/gemName'
- name: OTP
in: header
description: One-time passcode for multi-factor authentication if enabled.
required: false
schema:
type: string
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
required:
- email
properties:
email:
type: string
format: email
description: Email address of the user to add as owner
role:
type: string
description: Role to assign to the new owner
responses:
'200':
description: Owner added successfully
content:
text/plain:
schema:
type: string
example: Owner added successfully.
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Gem or user not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
delete:
operationId: removeGemOwner
summary: Remove A Gem Owner
description: Remove an owner from the specified gem. The owner is identified by their email address.
tags:
- Owners
parameters:
- $ref: '#/components/parameters/gemName'
- name: OTP
in: header
description: One-time passcode for multi-factor authentication if enabled.
required: false
schema:
type: string
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
required:
- email
properties:
email:
type: string
format: email
description: Email address of the owner to remove
responses:
'200':
description: Owner removed successfully
content:
text/plain:
schema:
type: string
example: Owner removed successfully.
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Gem or user not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
patch:
operationId: updateGemOwner
summary: Update A Gem Owner
description: Update the role of an existing owner on the specified gem.
tags:
- Owners
parameters:
- $ref: '#/components/parameters/gemName'
- name: OTP
in: header
description: One-time passcode for multi-factor authentication if enabled.
required: false
schema:
type: string
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
required:
- email
- role
properties:
email:
type: string
format: email
description: Email address of the owner to update
role:
type: string
description: New role for the owner
responses:
'200':
description: Owner updated successfully
content:
text/plain:
schema:
type: string
example: Owner updated successfully.
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Gem or user not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
parameters:
userHandle:
name: userHandle
in: path
description: The user handle or numeric user ID
required: true
schema:
type: string
example: tenderlove
gemName:
name: gemName
in: path
description: The name of the gem
required: true
schema:
type: string
example: rails
schemas:
Dependency:
type: object
description: A gem dependency
properties:
name:
type: string
description: Name of the dependency gem
requirements:
type: string
description: Version requirements string
Owner:
type: object
description: A gem owner on RubyGems.org
properties:
id:
type: integer
description: Unique user ID
handle:
type: string
description: User handle
email:
type: string
format: email
description: User email address
Gem:
type: object
description: A Ruby gem hosted on RubyGems.org
properties:
name:
type: string
description: The name of the gem
downloads:
type: integer
description: Total number of downloads for this gem
version:
type: string
description: The current (latest) version number
version_created_at:
type: string
format: date-time
description: Timestamp when the current version was created
version_downloads:
type: integer
description: Download count for the current version
platform:
type: string
description: The platform of the gem (e.g., ruby, java)
authors:
type: string
description: Comma-separated list of gem authors
info:
type: string
description: Short description of the gem
licenses:
type: array
items:
type: string
description: List of licenses for the gem
metadata:
type: object
additionalProperties:
type: string
description: Additional metadata key-value pairs
yanked:
type: boolean
description: Whether this gem version has been yanked
sha:
type: string
description: SHA-256 checksum of the gem file
project_uri:
type: string
format: uri
description: URI to the gem project page on RubyGems.org
gem_uri:
type: string
format: uri
description: URI to download the gem file
homepage_uri:
type: string
format: uri
description: URI to the gem homepage
wiki_uri:
type: string
format: uri
description: URI to the gem wiki
documentation_uri:
type: string
format: uri
description: URI to the gem documentation
mailing_list_uri:
type: string
format: uri
description: URI to the gem mailing list
source_code_uri:
type: string
format: uri
description: URI to the gem source code
bug_tracker_uri:
type: string
format: uri
description: URI to the gem bug tracker
changelog_uri:
type: string
format: uri
description: URI to the gem changelog
funding_uri:
type: string
format: uri
description: URI to the gem funding page
dependencies:
type: object
properties:
development:
type: array
items:
$ref: '#/components/schemas/Dependency'
description: Development dependencies
runtime:
type: array
items:
$ref: '#/components/schemas/Dependency'
description: Runtime dependencies
description: Gem dependency information
Error:
type: object
description: Error response from the RubyGems.org API
properties:
error:
type: string
description: Error message
externalDocs:
description: RubyGems.org API Documentation
url: https://guides.rubygems.org/rubygems-org-api/