Initial commit
This commit is contained in:
212
skills/uspto-database/references/peds_api.md
Normal file
212
skills/uspto-database/references/peds_api.md
Normal file
@@ -0,0 +1,212 @@
|
||||
# Patent Examination Data System (PEDS) API Reference
|
||||
|
||||
## Overview
|
||||
|
||||
The Patent Examination Data System (PEDS) provides access to USPTO patent application and filing status records. It contains bibliographic data, published document information, and patent term extension data.
|
||||
|
||||
**Data Coverage:** 1981 to present (some data back to 1935)
|
||||
|
||||
**Base URL:** Access through USPTO Open Data Portal
|
||||
|
||||
## What PEDS Provides
|
||||
|
||||
PEDS gives comprehensive transaction history and status information for patent applications:
|
||||
|
||||
- **Bibliographic data** - Application numbers, filing dates, titles, inventors, assignees
|
||||
- **Published documents** - Publication numbers and dates
|
||||
- **Transaction history** - All examination events with dates, codes, and descriptions
|
||||
- **Patent term adjustments** - PTA/PTE information
|
||||
- **Application status** - Current status and status codes
|
||||
- **File wrapper access** - Links to prosecution documents
|
||||
|
||||
## Key Features
|
||||
|
||||
1. **Transaction Activity** - Complete examination timeline with transaction dates, codes, and descriptions
|
||||
2. **Status Information** - Current application status and status codes
|
||||
3. **Bibliographic Updates** - Changes to inventors, assignees, titles over time
|
||||
4. **Family Data** - Related applications and continuity data
|
||||
5. **Office Action Tracking** - Mail dates and office action information
|
||||
|
||||
## Python Library: uspto-opendata-python
|
||||
|
||||
The recommended way to access PEDS is through the `uspto-opendata-python` library.
|
||||
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
pip install uspto-opendata-python
|
||||
```
|
||||
|
||||
### Basic Usage
|
||||
|
||||
```python
|
||||
from uspto.peds import PE DSClient
|
||||
|
||||
# Initialize client
|
||||
client = PEDSClient()
|
||||
|
||||
# Search by application number
|
||||
app_number = "16123456"
|
||||
result = client.get_application(app_number)
|
||||
|
||||
# Access application data
|
||||
print(f"Title: {result['title']}")
|
||||
print(f"Filing Date: {result['filing_date']}")
|
||||
print(f"Status: {result['status']}")
|
||||
|
||||
# Get transaction history
|
||||
transactions = result['transactions']
|
||||
for trans in transactions:
|
||||
print(f"{trans['date']}: {trans['code']} - {trans['description']}")
|
||||
```
|
||||
|
||||
### Search Methods
|
||||
|
||||
```python
|
||||
# By application number
|
||||
client.get_application("16123456")
|
||||
|
||||
# By patent number
|
||||
client.get_patent("11234567")
|
||||
|
||||
# By customer number (assignee)
|
||||
client.search_by_customer_number("12345")
|
||||
|
||||
# Bulk retrieval
|
||||
app_numbers = ["16123456", "16123457", "16123458"]
|
||||
results = client.bulk_retrieve(app_numbers)
|
||||
```
|
||||
|
||||
## Data Fields
|
||||
|
||||
### Bibliographic Fields
|
||||
|
||||
- `application_number` - Application number
|
||||
- `filing_date` - Filing date
|
||||
- `patent_number` - Patent number (if granted)
|
||||
- `patent_issue_date` - Issue date (if granted)
|
||||
- `title` - Application/patent title
|
||||
- `inventors` - List of inventors
|
||||
- `assignees` - List of assignees
|
||||
- `app_type` - Application type (utility, design, plant, reissue)
|
||||
- `app_status` - Current application status
|
||||
- `app_status_date` - Status date
|
||||
|
||||
### Transaction Fields
|
||||
|
||||
- `transaction_date` - Date of transaction
|
||||
- `transaction_code` - USPTO event code
|
||||
- `transaction_description` - Description of event
|
||||
- `mail_date` - Mail room date (for office actions)
|
||||
|
||||
### Patent Term Data
|
||||
|
||||
- `pta_pte_summary` - Patent term adjustment/extension summary
|
||||
- `pta_pte_history` - History of term calculations
|
||||
|
||||
## Status Codes
|
||||
|
||||
Common application status codes:
|
||||
|
||||
- **Patented Case** - Patent has been granted
|
||||
- **Abandoned** - Application is abandoned
|
||||
- **Pending** - Application is under examination
|
||||
- **Allowed** - Application has been allowed, awaiting issue
|
||||
- **Final Rejection** - Final rejection issued
|
||||
- **Non-Final Rejection** - Non-final rejection issued
|
||||
- **Response Filed** - Applicant response filed
|
||||
|
||||
## Transaction Codes
|
||||
|
||||
Common transaction codes include:
|
||||
|
||||
- **CTNF** - Non-final rejection mailed
|
||||
- **CTFR** - Final rejection mailed
|
||||
- **AOPF** - Office action mailed
|
||||
- **WRIT** - Response filed
|
||||
- **NOA** - Notice of allowance mailed
|
||||
- **ISS.FEE** - Issue fee payment
|
||||
- **ABND** - Application abandoned
|
||||
|
||||
Full code list available in OCE Patent Examination Status/Event Codes API.
|
||||
|
||||
## Use Cases
|
||||
|
||||
### 1. Track Application Progress
|
||||
|
||||
Monitor pending applications for office actions and status changes.
|
||||
|
||||
```python
|
||||
# Get current status
|
||||
app = client.get_application("16123456")
|
||||
print(f"Current status: {app['app_status']}")
|
||||
print(f"Status date: {app['app_status_date']}")
|
||||
|
||||
# Check for recent office actions
|
||||
recent_oas = [t for t in app['transactions']
|
||||
if t['code'] in ['CTNF', 'CTFR', 'AOPF']
|
||||
and t['date'] > '2024-01-01']
|
||||
```
|
||||
|
||||
### 2. Portfolio Analysis
|
||||
|
||||
Analyze prosecution history across a portfolio.
|
||||
|
||||
```python
|
||||
# Get all applications for an assignee
|
||||
apps = client.search_by_customer_number("12345")
|
||||
|
||||
# Calculate average pendency
|
||||
pendencies = []
|
||||
for app in apps:
|
||||
if app['patent_issue_date']:
|
||||
filing = datetime.strptime(app['filing_date'], '%Y-%m-%d')
|
||||
issue = datetime.strptime(app['patent_issue_date'], '%Y-%m-%d')
|
||||
pendencies.append((issue - filing).days)
|
||||
|
||||
avg_pendency = sum(pendencies) / len(pendencies)
|
||||
print(f"Average pendency: {avg_pendency} days")
|
||||
```
|
||||
|
||||
### 3. Examine Rejection Patterns
|
||||
|
||||
Analyze types of rejections received.
|
||||
|
||||
```python
|
||||
# Count rejection types
|
||||
rejections = {}
|
||||
for trans in app['transactions']:
|
||||
if 'rejection' in trans['description'].lower():
|
||||
code = trans['code']
|
||||
rejections[code] = rejections.get(code, 0) + 1
|
||||
```
|
||||
|
||||
## Integration with Other APIs
|
||||
|
||||
PEDS data can be combined with other USPTO APIs:
|
||||
|
||||
- **Office Action Text API** - Retrieve full text of office actions using application number
|
||||
- **Patent Assignment Search** - Find ownership changes
|
||||
- **PTAB API** - Check for appeal proceedings
|
||||
|
||||
## Important Notes
|
||||
|
||||
1. **PAIR Bulk Data (PBD) is decommissioned** - Use PEDS instead
|
||||
2. **Data updates** - PEDS is updated regularly but may have 1-2 day lag
|
||||
3. **Application numbers** - Use standardized format (no slashes or spaces)
|
||||
4. **Continuity data** - Parent/child applications tracked in transaction history
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Batch requests** - Use bulk retrieval for multiple applications
|
||||
2. **Cache data** - Avoid redundant API calls for same application
|
||||
3. **Monitor updates** - Check for transaction updates regularly
|
||||
4. **Handle missing data** - Not all fields populated for all applications
|
||||
5. **Parse transaction codes** - Use code descriptions for user-friendly display
|
||||
|
||||
## Resources
|
||||
|
||||
- **Library Documentation**: https://docs.ip-tools.org/uspto-opendata-python/
|
||||
- **PyPI Package**: https://pypi.org/project/uspto-opendata-python/
|
||||
- **GitHub Repository**: https://github.com/ip-tools/uspto-opendata-python
|
||||
- **USPTO PEDS Portal**: https://ped.uspto.gov/
|
||||
Reference in New Issue
Block a user