Office Action Rejections Client
clients.oa_rejections - Client for USPTO Office Action Rejections API.
This module provides a client for interacting with the USPTO Office Action Rejections API (v2). It allows users to search for rejection-level data from Office Actions mailed from October 1, 2017 to 30 days prior to the current date, including rejection type indicators, claim arrays, and examiner metadata.
- class pyUSPTO.clients.oa_rejections.OARejectionsClient(config=None, base_url=None)[source]
Bases:
BaseUSPTOClient[OARejectionsResponse]Client for interacting with the USPTO Office Action Rejections API.
This client provides methods to search for rejection data from Office Actions. The API refreshes daily and contains publicly available data starting with 12 series applications.
- ENDPOINTS = {'get_fields': 'api/v1/patent/oa/oa_rejections/v2/fields', 'search': 'api/v1/patent/oa/oa_rejections/v2/records'}
- __init__(config=None, base_url=None)[source]
Initialize the OARejectionsClient.
- Parameters:
config (
USPTOConfig|None) – USPTOConfig instance containing API key and settings. If not provided, creates config from environment variables (requires USPTO_API_KEY).base_url (
str|None) – Optional base URL override for the USPTO OA Rejections API. If not provided, uses config.oa_rejections_base_url or default.
- get_fields()[source]
Retrieve available fields and API metadata for the OA Rejections API.
- Returns:
- API metadata including available field
names and last data update timestamp.
- Return type:
Examples
>>> fields_response = client.get_fields() >>> print(fields_response.field_count) 31 >>> print(fields_response.api_status) 'PUBLISHED'
- paginate(post_body=None, **kwargs)[source]
Provide an iterator to paginate through rejection search results.
Automatically handles pagination using Solr-style start/rows parameters. The
startparameter is managed internally; providing it will raise a ValueError.- Parameters:
- Returns:
An iterator yielding OARejectionsRecord objects.
- Return type:
Examples
# Paginate through all CTNF rejections >>> for record in client.paginate( … legacy_document_code_identifier_q=”CTNF”, … rows=50, … ): … print(record.patent_application_number)
# Paginate with POST body >>> for record in client.paginate( … post_body={“criteria”: “hasRej103:1”, “rows”: 50} … ): … process(record)
- search(criteria=None, sort=None, start=0, rows=25, post_body=None, patent_application_number_q=None, legacy_document_code_identifier_q=None, group_art_unit_number_q=None, legal_section_code_q=None, action_type_category_q=None, submission_date_from_q=None, submission_date_to_q=None, additional_query_params=None)[source]
Return rejection records matching the given criteria.
This method performs a POST request (form-urlencoded) to search for office action rejection records. You can provide either a direct post_body, a criteria string, or use convenience parameters.
- Parameters:
criteria (
str|None) – Direct Solr query string (e.g.,"patentApplicationNumber:12190351").sort (
str|None) – Sort order for results (e.g.,"submissionDate desc").start (
int|None) – Starting index for pagination (default: 0).rows (
int|None) – Maximum number of records to return (default: 25).post_body (
dict[str,Any] |None) – Optional POST body dict for complex queries. When provided, all other parameters are ignored.patent_application_number_q (
str|None) – Filter by patent application number.legacy_document_code_identifier_q (
str|None) – Filter by document code (e.g.,"CTNF").group_art_unit_number_q (
str|None) – Filter by group art unit number.legal_section_code_q (
str|None) – Filter by legal section code.action_type_category_q (
str|None) – Filter by action type category.submission_date_from_q (
str|None) – Filter from this submission date ("YYYY-MM-DD").submission_date_to_q (
str|None) – Filter to this submission date ("YYYY-MM-DD").additional_query_params (
dict[str,Any] |None) – Additional custom POST body parameters.
- Returns:
Response containing matching rejection records.
- Return type:
Examples
# Search with a direct criteria string >>> response = client.search( … criteria=”patentApplicationNumber:12190351” … )
# Search with convenience parameters >>> response = client.search( … legacy_document_code_identifier_q=”CTNF”, … submission_date_from_q=”2020-01-01”, … rows=50, … )
# Search with POST body >>> response = client.search( … post_body={“criteria”: “hasRej103:1”, “rows”: 100} … )