Skip to content
This repository was archived by the owner on Apr 24, 2026. It is now read-only.

Commit 97f5148

Browse files
committed
Migrate USPTO client to ODP and remove PEDS
1 parent 7b5e556 commit 97f5148

166 files changed

Lines changed: 15287 additions & 141513 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Patent Client environment configuration example
2+
# Copy to .env and fill in values as needed.
3+
4+
# Base configuration
5+
PATENT_CLIENT_LOG_LEVEL=INFO
6+
PATENT_CLIENT_LOG_FILE=patent_client.log
7+
8+
# USPTO Open Data Portal API (required for ODP-backed features)
9+
PATENT_CLIENT_ODP_API_KEY=your-odp-api-key
10+
11+
# European Patent Office OPS credentials (required for EPO integrations)
12+
PATENT_CLIENT_EPO_API_KEY=your-epo-consumer-key
13+
PATENT_CLIENT_EPO_API_SECRET=your-epo-consumer-secret
14+
15+
# USITC EDIS credentials (optional, only needed for ITC workflows)
16+
PATENT_CLIENT_ITC_USERNAME=your-itc-username
17+
PATENT_CLIENT_ITC_PASSWORD=your-itc-password
18+
19+
# Custom base directory for patent_client cache/logs (optional)
20+
# PATENT_CLIENT_BASE_DIR=/path/to/cache

.github/workflows/build.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ name: Build
22

33
on:
44
push:
5-
branches: [main]
5+
branches: [main, master]
66
tags: ['v*']
77
pull_request:
8-
branches: [main]
8+
branches: [main, master]
99
workflow_dispatch:
1010
env:
1111
LATEST_PY_VERSION: '3.10'

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ In version 5, like in version 3, you can just `from patent_client import [Model]
3030
of the model. No asynchronous methods or functionality at all. Or you can do `from patent_client._async import [Model]`
3131
and get an asynchronous version of the model.
3232

33-
Version 5 also brings support for the USPTO's new [Open Data Portal](https://beta-data.uspto.gov/home), a system currently in beta that is scheduled to replace the current Patent Examination Data System in late 2024.
33+
Version 5 also brings support for the USPTO's new [Open Data Portal](https://beta-data.uspto.gov/home). As of March 2025 the USPTO has retired the legacy Patent Examination Data System (PEDS), so `USApplication` now relies on the Open Data Portal APIs by default.
3434

3535
## Coverage
3636

3737
- [United States Patent & Trademark Office][USPTO]
3838

39-
- [Patent Examination Data][PEDS] - Full Support
40-
- [Open Data Portal][ODP] - Full Support
39+
- [Open Data Portal][ODP] - Full Support (default `USApplication` backend)
40+
- [Patent Examination Data][PEDS] - Retired by USPTO (legacy docs only)
4141
- [Global Dossier][GD] - Full Support
4242
- [Patent Assignment Data][Assignment] - Lookup Support
4343
- [Patent Trial & Appeal Board API v2][PTAB] - Supports Proceedings, Decisions, and Documents
@@ -108,6 +108,8 @@ True
108108

109109
```
110110

111+
> **Note:** The USPTO Open Data Portal requires an API key. Set it via `PATENT_CLIENT_ODP_API_KEY` (see the [getting started guide](https://patent-client.readthedocs.io/en/latest/getting_started.html)) before calling `USApplication`.
112+
111113
## Async Quick Start
112114

113115
To use async with Patent Client, just import the classes you need from the async module. All methods
@@ -149,4 +151,3 @@ Pull requests welcome!
149151
- [Google Public Patent Data](https://github.com/google/patents-public-data)
150152
- [PatentsView API Wrapper](https://github.com/mikeym88/PatentsView-API-Wrapper)
151153
- [USPTO Scrapy Scraper](https://github.com/blazers08/USPTO)
152-

cassettes/patent_client/uspto/odp/api_test.py/test_get_application_basic_data.yaml

Lines changed: 439 additions & 0 deletions
Large diffs are not rendered by default.

cassettes/patent_client/uspto/odp/api_test.py/test_get_application_data.yaml

Lines changed: 439 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
interactions:
2+
- request:
3+
body: ''
4+
headers:
5+
X-API-KEY:
6+
- REDACTED
7+
accept:
8+
- '*/*'
9+
accept-encoding:
10+
- gzip, deflate, zstd
11+
connection:
12+
- keep-alive
13+
host:
14+
- api.uspto.gov
15+
user-agent:
16+
- Mozilla/5.0 Python Patent Clientbot/5.0.19 (parkerhancock@users.noreply.github.com)
17+
method: GET
18+
uri: https://api.uspto.gov/api/v1/patent/applications/16123456/assignment
19+
response:
20+
content: '{"count":1,"patentFileWrapperDataBag":[{"assignmentBag":[{"assignmentReceivedDate":"2018-09-07","assignorBag":[{"executionDate":"2018-07-11","assignorName":"KANADA,
21+
SHOJI"}],"reelAndFrameNumber":"046816/0108","frameNumber":108,"assignmentRecordedDate":"2018-09-07","conveyanceText":"ASSIGNMENT
22+
OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).","pageTotalQuantity":3,"assigneeBag":[{"assigneeAddress":{"cityName":"TOKYO","geographicRegionCode":"JPX","postalCode":"106-8620","addressLineOneText":"26-30,
23+
NISHIAZABU 2-CHOME, MINATO-KU"},"assigneeNameText":"FUJIFILM CORPORATION"}],"assignmentMailedDate":"2018-09-10","reelNumber":46816,"correspondenceAddressBag":[{"addressLineOneText":"8110
24+
GATEHOUSE ROAD, SUITE 100E","correspondentNameText":"BIRCH, STEWART, KOLASCH
25+
& BIRCH, LLP","addressLineTwoText":"FALLS CHURCH, VA 22042"}],"assignmentDocumentLocationURI":"https://legacy-assignments.uspto.gov/assignments/assignment-pat-046816-0108.pdf"}],"applicationNumberText":"16123456"}],"requestIdentifier":"8e824662-53f0-4084-9eb9-213178161944"}'
26+
headers:
27+
access-control-allow-headers:
28+
- Origin, X-Requested-With, Content-Type, Accept
29+
access-control-allow-methods:
30+
- OPTIONS,POST,GET
31+
access-control-allow-origin:
32+
- '*'
33+
content-length:
34+
- '1041'
35+
content-type:
36+
- application/json
37+
date:
38+
- Fri, 26 Sep 2025 19:17:27 GMT
39+
x-amz-apigw-id:
40+
- Rhj_EGuxIAMF-pw=
41+
x-amzn-requestid:
42+
- 8e824662-53f0-4084-9eb9-213178161944
43+
x-amzn-trace-id:
44+
- Root=1-68d6e6c6-3b47274469806e4222eec571;Parent=0a57dac5d5e77925;Sampled=0;Lineage=1:33e8fdb8:0
45+
http_version: HTTP/2
46+
status_code: 200
47+
version: 1

0 commit comments

Comments
 (0)