Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:30:10 +08:00
commit f0bd18fb4e
824 changed files with 331919 additions and 0 deletions

View File

@@ -0,0 +1,394 @@
# Additional USPTO APIs Reference
## Overview
Beyond patent search, PEDS, and trademarks, USPTO provides specialized APIs for citations, office actions, assignments, litigation, and other patent data.
## 1. Enriched Citation API
### Overview
Provides insights into patent evaluation processes and cited references for the IP5 (USPTO, EPO, JPO, KIPO, CNIPA) and public use.
**Versions:** v3, v2, v1
**Base URL:** Access through USPTO Open Data Portal
### Purpose
Analyze which references examiners cite during patent examination and how patents cite prior art.
### Key Features
- **Forward citations** - Patents that cite a given patent
- **Backward citations** - References cited by a patent
- **Examiner citations** - References cited by examiner vs. applicant
- **Citation context** - How and why references are cited
### Use Cases
- Prior art analysis
- Patent landscape analysis
- Identifying related technologies
- Assessing patent strength based on citations
## 2. Office Action APIs
### 2.1 Office Action Text Retrieval API
**Version:** v1
### Purpose
Retrieves complete full-text office action correspondence documents for patent applications.
### Features
- Full text of office actions
- Restrictions, rejections, objections
- Examiner amendments
- Search information
### Example Use
```python
# Retrieve office action text by application number
def get_office_action_text(app_number, api_key):
"""
Fetch full text of office actions for an application.
Note: Integrate with PEDS to identify which office actions exist.
"""
# API implementation
pass
```
### 2.2 Office Action Citations API
**Versions:** v2, beta v1
### Purpose
Provides patent citation data extracted from office actions, showing which references examiners used during examination.
### Key Data
- Patent and non-patent literature citations
- Citation context (rejection, information, etc.)
- Examiner search strategies
- Prosecution research dataset
### 2.3 Office Action Rejection API
**Versions:** v2, beta v1
### Purpose
Details rejection reasons and examination outcomes with bulk rejection data through March 2025.
### Rejection Types
- **35 U.S.C. § 102** - Anticipation (lack of novelty)
- **35 U.S.C. § 103** - Obviousness
- **35 U.S.C. § 112** - Enablement, written description, indefiniteness
- **35 U.S.C. § 101** - Subject matter eligibility
### Use Cases
- Analyze common rejection reasons
- Identify problematic claim language
- Prepare responses based on historical data
- Portfolio analysis of rejection patterns
### 2.4 Office Action Weekly Zips API
**Version:** v1
### Purpose
Delivers bulk downloads of full-text office action documents organized by weekly release schedules.
### Features
- Weekly archive downloads
- Complete office action text
- Bulk access for large-scale analysis
## 3. Patent Assignment Search API
### Overview
**Version:** v1.4
Accesses USPTO patent assignment database for ownership records and transfers.
**Base URL:** `https://assignment-api.uspto.gov/patent/`
### Purpose
Track patent ownership, assignments, security interests, and corporate transactions.
### Search Methods
#### By Patent Number
```
GET /v1.4/assignment/patent/{patent_number}
```
#### By Application Number
```
GET /v1.4/assignment/application/{application_number}
```
#### By Assignee Name
```
POST /v1.4/assignment/search
{
"criteria": {
"assigneeName": "Company Name"
}
}
```
### Response Format
Returns XML with assignment records similar to trademark assignments:
- Reel/frame numbers
- Conveyance type
- Dates (execution and recorded)
- Assignors and assignees
- Affected patents/applications
### Common Uses
```python
def track_patent_ownership(patent_number, api_key):
"""Track ownership history of a patent."""
url = f"https://assignment-api.uspto.gov/patent/v1.4/assignment/patent/{patent_number}"
headers = {"X-Api-Key": api_key}
response = requests.get(url, headers=headers)
if response.status_code == 200:
# Parse XML to extract assignment history
return response.text
return None
def find_company_patents(company_name, api_key):
"""Find patents assigned to a company."""
url = "https://assignment-api.uspto.gov/patent/v1.4/assignment/search"
headers = {"X-Api-Key": api_key}
data = {"criteria": {"assigneeName": company_name}}
response = requests.post(url, headers=headers, json=data)
return response.text
```
## 4. PTAB API (Patent Trial and Appeal Board)
### Overview
**Version:** v2
Access to Patent Trial and Appeal Board proceedings data.
### Purpose
Retrieve information about:
- Inter partes review (IPR)
- Post-grant review (PGR)
- Covered business method (CBM) review
- Ex parte appeals
### Data Available
- Petition information
- Trial decisions
- Final written decisions
- Petitioner and patent owner information
- Claims challenged
- Trial outcomes
### Note
Currently migrating to new Open Data Portal. Check current documentation for access details.
## 5. Patent Litigation Cases API
### Overview
**Version:** v1
Contains 74,623+ district court litigation records covering patent litigation data.
### Purpose
Access federal district court patent infringement cases.
### Key Data
- Case numbers and filing dates
- Patents asserted
- Parties (plaintiffs and defendants)
- Venues
- Case outcomes
### Use Cases
- Litigation risk analysis
- Identify frequently litigated patents
- Track litigation trends
- Analyze venue preferences
- Assess patent enforcement patterns
## 6. Cancer Moonshot Patent Data Set API
### Overview
**Version:** v1.0.1
Specialized dataset for cancer-related patent discoveries.
### Purpose
Search and download patents related to cancer research, treatment, and diagnostics.
### Features
- Curated cancer-related patents
- Bulk data download
- Classification by cancer type
- Treatment modality categorization
### Use Cases
- Cancer research prior art
- Technology landscape analysis
- Identify research trends
- Licensing opportunities
## 7. OCE Patent Examination Status/Event Codes APIs
### Overview
**Version:** v1
Provides official descriptions of USPTO status and event codes used in patent examination.
### Purpose
Decode transaction codes and status codes found in PEDS and other examination data.
### Data Provided
- **Status codes** - Application status descriptions
- **Event codes** - Transaction/event descriptions
- **Code definitions** - Official meanings
### Integration
Use with PEDS data to interpret transaction codes:
```python
def get_code_description(code, api_key):
"""Get human-readable description of USPTO code."""
# Fetch from OCE API
pass
def enrich_peds_data(peds_transactions, api_key):
"""Add descriptions to PEDS transaction codes."""
for trans in peds_transactions:
trans['description'] = get_code_description(trans['code'], api_key)
return peds_transactions
```
## API Integration Patterns
### Combined Workflow Example
```python
def comprehensive_patent_analysis(patent_number, api_key):
"""
Comprehensive analysis combining multiple APIs.
"""
results = {}
# 1. Get patent details from PatentSearch
results['patent_data'] = search_patent(patent_number, api_key)
# 2. Get examination history from PEDS
results['prosecution'] = get_peds_data(patent_number, api_key)
# 3. Get assignment history
results['assignments'] = get_assignments(patent_number, api_key)
# 4. Get citation data
results['citations'] = get_citations(patent_number, api_key)
# 5. Check litigation history
results['litigation'] = get_litigation(patent_number, api_key)
# 6. Get PTAB challenges
results['ptab'] = get_ptab_proceedings(patent_number, api_key)
return results
```
### Portfolio Analysis Example
```python
def analyze_company_portfolio(company_name, api_key):
"""
Analyze a company's patent portfolio using multiple APIs.
"""
# 1. Find all assigned patents
assignments = find_company_patents(company_name, api_key)
patent_numbers = extract_patent_numbers(assignments)
# 2. Get details for each patent
portfolio = []
for patent_num in patent_numbers:
patent_data = {
'number': patent_num,
'details': search_patent(patent_num, api_key),
'citations': get_citations(patent_num, api_key),
'litigation': get_litigation(patent_num, api_key)
}
portfolio.append(patent_data)
# 3. Aggregate statistics
stats = {
'total_patents': len(portfolio),
'cited_by_count': sum(len(p['citations']) for p in portfolio),
'litigated_count': sum(1 for p in portfolio if p['litigation']),
'technology_areas': aggregate_tech_areas(portfolio)
}
return {'portfolio': portfolio, 'statistics': stats}
```
## Best Practices
1. **API Key Management** - Use environment variables, never hardcode
2. **Rate Limiting** - Implement exponential backoff for all APIs
3. **Caching** - Cache API responses to minimize redundant calls
4. **Error Handling** - Gracefully handle API errors and missing data
5. **Data Validation** - Validate input formats before API calls
6. **Combining APIs** - Use appropriate APIs together for comprehensive analysis
7. **Documentation** - Keep track of API versions and changes
## API Key Registration
All APIs require registration at:
**https://account.uspto.gov/api-manager/**
Single API key works across most USPTO APIs.
## Resources
- **Developer Portal**: https://developer.uspto.gov/
- **Open Data Portal**: https://data.uspto.gov/
- **API Catalog**: https://developer.uspto.gov/api-catalog
- **Swagger Docs**: Available for individual APIs