Models
models.bulk_data - Data models for USPTO bulk data API
This module provides data models for the USPTO Open Data Portal (ODP) Bulk Data API.
- class pyUSPTO.models.bulk_data.BulkDataProduct(product_identifier, product_description_text, product_title_text, product_frequency_text, product_label_array_text, product_dataset_array_text, product_dataset_category_array_text, product_from_date, product_to_date, product_total_file_size, product_file_total_quantity, last_modified_date_time, mime_type_identifier_array_text, product_file_bag=None, days_of_week_text=None)[source]
Bases:
objectRepresents a product in the bulk data API.
- classmethod from_dict(data)[source]
Create a BulkDataProduct object from a dictionary.
- Return type:
-
product_file_bag:
Optional[ProductFileBag] = None
- class pyUSPTO.models.bulk_data.BulkDataResponse(count, bulk_data_product_bag)[source]
Bases:
objectTop-level response from the bulk data API.
-
bulk_data_product_bag:
List[BulkDataProduct]
-
bulk_data_product_bag:
- class pyUSPTO.models.bulk_data.FileData(file_name, file_size, file_data_from_date, file_data_to_date, file_type_text, file_release_date, file_download_uri=None, file_date=None, file_last_modified_date_time=None)[source]
Bases:
objectRepresents a file in the bulk data API.
- class pyUSPTO.models.bulk_data.ProductFileBag(count, file_data_bag)[source]
Bases:
objectContainer for file data elements.
models.patent_data - Data models for USPTO patent data API
This module provides data models for the USPTO Patent Data API, enhanced with more Pythonic features like immutability, Enums, and native date/datetime objects.
- class pyUSPTO.models.patent_data.ActiveIndicator(value)[source]
Bases:
EnumRepresents an active or inactive status, often used for practitioners or entities.
- ACTIVE = 'Active'
- FALSE = 'false'
- NO = 'N'
- TRUE = 'true'
- YES = 'Y'
- class pyUSPTO.models.patent_data.Address(name_line_one_text=None, name_line_two_text=None, address_line_one_text=None, address_line_two_text=None, address_line_three_text=None, address_line_four_text=None, geographic_region_name=None, geographic_region_code=None, postal_code=None, city_name=None, country_code=None, country_name=None, postal_address_category=None, correspondent_name_text=None)[source]
Bases:
objectRepresents a postal address with fields for street, city, region, country, and postal code.
It can be used for various entities like applicants, inventors, or correspondence.
- class pyUSPTO.models.patent_data.Applicant(first_name=None, middle_name=None, last_name=None, name_prefix=None, name_suffix=None, preferred_name=None, country_code=None, applicant_name_text=None, correspondence_address_bag=<factory>)[source]
Bases:
PersonRepresents an applicant for a patent, inheriting from Person.
Includes applicant-specific name text and a list of correspondence addresses.
- class pyUSPTO.models.patent_data.ApplicationContinuityData(parent_continuity_bag=<factory>, child_continuity_bag=<factory>)[source]
Bases:
objectHolds parent and child continuity application data for a specific patent application.
This class consolidates lists of ParentContinuity and ChildContinuity objects, representing the lineage of an application.
-
child_continuity_bag:
List[ChildContinuity]
-
parent_continuity_bag:
List[ParentContinuity]
-
child_continuity_bag:
- class pyUSPTO.models.patent_data.ApplicationMetaData(national_stage_indicator=None, entity_status_data=None, publication_date_bag=<factory>, publication_sequence_number_bag=<factory>, publication_category_bag=<factory>, docket_number=None, first_inventor_to_file_indicator=None, first_applicant_name=None, first_inventor_name=None, application_confirmation_number=None, application_status_date=None, application_status_description_text=None, filing_date=None, effective_filing_date=None, grant_date=None, group_art_unit_number=None, application_type_code=None, application_type_label_name=None, application_type_category=None, invention_title=None, patent_number=None, application_status_code=None, earliest_publication_number=None, earliest_publication_date=None, pct_publication_number=None, pct_publication_date=None, international_registration_publication_date=None, international_registration_number=None, examiner_name_text=None, class_field=None, subclass=None, uspc_symbol_text=None, customer_number=None, cpc_classification_bag=<factory>, applicant_bag=<factory>, inventor_bag=<factory>, raw_data=None)[source]
Bases:
objectRepresents the comprehensive metadata associated with a patent application.
This class holds a wide range of information including application status, dates (filing, grant, publication), applicant and inventor details, classification data, and other identifying information.
-
entity_status_data:
Optional[EntityStatus] = None
-
entity_status_data:
- class pyUSPTO.models.patent_data.Assignee(assignee_name_text=None, assignee_address=None)[source]
Bases:
objectRepresents an assignee in a patent assignment.
- assignee_name_text
The name of the party receiving the assignment.
- assignee_address
The address of the assignee.
- class pyUSPTO.models.patent_data.Assignment(reel_number=None, frame_number=None, reel_and_frame_number=None, assignment_document_location_uri=None, assignment_received_date=None, assignment_recorded_date=None, assignment_mailed_date=None, conveyance_text=None, assignor_bag=<factory>, assignee_bag=<factory>, correspondence_address_bag=<factory>)[source]
Bases:
objectRepresents a patent assignment, detailing the transfer of rights.
Includes information about the reel and frame, document location, dates, conveyance text, and bags of assignors, assignees, and correspondence addresses.
- class pyUSPTO.models.patent_data.Assignor(assignor_name=None, execution_date=None)[source]
Bases:
objectRepresents an assignor in a patent assignment.
- assignor_name
The name of the assigning party.
- execution_date
The date the assignment was executed.
- class pyUSPTO.models.patent_data.Attorney(first_name=None, middle_name=None, last_name=None, name_prefix=None, name_suffix=None, preferred_name=None, country_code=None, registration_number=None, active_indicator=None, registered_practitioner_category=None, attorney_address_bag=<factory>, telecommunication_address_bag=<factory>)[source]
Bases:
PersonRepresents an attorney or agent associated with a patent application, inheriting from Person.
Includes registration number, active status, practitioner category, addresses, and telecommunication details.
-
telecommunication_address_bag:
List[Telecommunication]
-
telecommunication_address_bag:
- class pyUSPTO.models.patent_data.ChildContinuity(first_inventor_to_file_indicator=None, application_number_text=None, filing_date=None, status_code=None, status_description_text=None, patent_number=None, claim_parentage_type_code=None, claim_parentage_type_code_description_text=None, child_application_status_code=None, parent_application_number_text=None, child_application_number_text=None, child_application_status_description_text=None, child_application_filing_date=None, child_patent_number=None)[source]
Bases:
ContinuityRepresents a child application in a patent application’s continuity chain.
Inherits from Continuity and adds specific fields for child application details.
- class pyUSPTO.models.patent_data.Continuity(first_inventor_to_file_indicator=None, application_number_text=None, filing_date=None, status_code=None, status_description_text=None, patent_number=None, claim_parentage_type_code=None, claim_parentage_type_code_description_text=None)[source]
Bases:
objectBase class representing continuity data for a patent application.
This includes details about the application’s relationship to other applications (parent/child), its filing status under AIA (America Invents Act), and key identifiers.
- class pyUSPTO.models.patent_data.CustomerNumberCorrespondence(patron_identifier=None, organization_standard_name=None, power_of_attorney_address_bag=<factory>, telecommunication_address_bag=<factory>)[source]
Bases:
objectRepresents correspondence data associated with a USPTO customer number.
Includes patron identifier, organization name, power of attorney addresses, and telecommunication details.
-
telecommunication_address_bag:
List[Telecommunication]
-
telecommunication_address_bag:
- class pyUSPTO.models.patent_data.DirectionCategory(value)[source]
Bases:
EnumRepresents the direction of a document relative to the USPTO (e.g., INCOMING, OUTGOING).
- INCOMING = 'INCOMING'
- OUTGOING = 'OUTGOING'
- class pyUSPTO.models.patent_data.Document(application_number_text=None, official_date=None, document_identifier=None, document_code=None, document_code_description_text=None, direction_category=None, document_formats=<factory>)[source]
Bases:
objectRepresents a single document associated with a patent application.
This includes metadata such as its identifier, official date, code, description, direction (incoming/outgoing), and available download formats.
-
direction_category:
Optional[DirectionCategory] = None
-
document_formats:
List[DocumentFormat]
-
direction_category:
- class pyUSPTO.models.patent_data.DocumentBag(documents)[source]
Bases:
objectA collection of Document objects associated with a patent application.
Provides iterable access to the documents.
- class pyUSPTO.models.patent_data.DocumentFormat(mime_type_identifier=None, download_url=None, page_total_quantity=None)[source]
Bases:
objectRepresents an available download format for a specific document.
- mime_type_identifier
The MIME type of the downloadable file (e.g., “PDF”).
- download_url
The URL from which the document format can be downloaded.
- page_total_quantity
The total number of pages in this document format.
- class pyUSPTO.models.patent_data.EntityStatus(small_entity_status_indicator=None, business_entity_status_category=None)[source]
Bases:
objectRepresents the entity status of an applicant (e.g., small entity status).
- small_entity_status_indicator
Boolean indicating if the applicant qualifies for small entity status.
- business_entity_status_category
String category of the business entity status (e.g., “Undiscounted”).
- class pyUSPTO.models.patent_data.EventData(event_code=None, event_description_text=None, event_date=None)[source]
Bases:
objectRepresents a single event in the transaction history of a patent application.
- event_code
A code identifying the type of event.
- event_description_text
A textual description of the event.
- event_date
The date the event was recorded.
- class pyUSPTO.models.patent_data.ForeignPriority(ip_office_name=None, filing_date=None, application_number_text=None)[source]
Bases:
objectRepresents a foreign priority claim for a patent application.
- ip_office_name
The name of the intellectual property office of the priority application.
- filing_date
The filing date of the priority application.
- application_number_text
The application number of the priority application.
- class pyUSPTO.models.patent_data.Inventor(first_name=None, middle_name=None, last_name=None, name_prefix=None, name_suffix=None, preferred_name=None, country_code=None, inventor_name_text=None, correspondence_address_bag=<factory>)[source]
Bases:
PersonRepresents an inventor for a patent application, inheriting from Person.
Includes inventor-specific name text and a list of correspondence addresses.
- class pyUSPTO.models.patent_data.ParentContinuity(first_inventor_to_file_indicator=None, application_number_text=None, filing_date=None, status_code=None, status_description_text=None, patent_number=None, claim_parentage_type_code=None, claim_parentage_type_code_description_text=None, parent_application_status_code=None, parent_patent_number=None, parent_application_status_description_text=None, parent_application_filing_date=None, parent_application_number_text=None, child_application_number_text=None)[source]
Bases:
ContinuityRepresents a parent application in a patent application’s continuity chain.
Inherits from Continuity and adds specific fields for parent application details.
- class pyUSPTO.models.patent_data.PatentDataResponse(count, patent_file_wrapper_data_bag=<factory>)[source]
Bases:
objectRepresents the overall response from a patent data API request.
It typically includes a count of the results and a list of PatentFileWrapper objects, each containing detailed data for a patent application.
-
patent_file_wrapper_data_bag:
List[PatentFileWrapper]
- to_csv()[source]
Converts the patent data in this response to a CSV formatted string.
The CSV will contain the following headers: - inventionTitle - applicationNumberText - filingDate - applicationTypeLabelName - publicationCategoryBag (pipe-separated if multiple) - applicationStatusDescriptionText - applicationStatusDate - firstInventorName
- Return type:
- Returns:
A string containing the data in CSV format.
-
patent_file_wrapper_data_bag:
- class pyUSPTO.models.patent_data.PatentFileWrapper(application_number_text=None, application_meta_data=None, correspondence_address_bag=<factory>, assignment_bag=<factory>, record_attorney=None, foreign_priority_bag=<factory>, parent_continuity_bag=<factory>, child_continuity_bag=<factory>, patent_term_adjustment_data=None, event_data_bag=<factory>, pgpub_document_meta_data=None, grant_document_meta_data=None, last_ingestion_date_time=None)[source]
Bases:
objectRepresents the complete file wrapper for a single patent application.
This is a top-level object containing all data sections related to an application, such as metadata, addresses, assignments, attorney information, continuity data, PTA data, transaction events, and associated document metadata.
-
application_meta_data:
Optional[ApplicationMetaData] = None
-
assignment_bag:
List[Assignment]
-
child_continuity_bag:
List[ChildContinuity]
-
foreign_priority_bag:
List[ForeignPriority]
-
grant_document_meta_data:
Optional[PrintedMetaData] = None
-
parent_continuity_bag:
List[ParentContinuity]
-
patent_term_adjustment_data:
Optional[PatentTermAdjustmentData] = None
-
pgpub_document_meta_data:
Optional[PrintedMetaData] = None
-
record_attorney:
Optional[RecordAttorney] = None
-
application_meta_data:
- class pyUSPTO.models.patent_data.PatentTermAdjustmentData(a_delay_quantity=None, adjustment_total_quantity=None, applicant_day_delay_quantity=None, b_delay_quantity=None, c_delay_quantity=None, filing_date=None, grant_date=None, non_overlapping_day_quantity=None, overlapping_day_quantity=None, ip_office_day_delay_quantity=None, patent_term_adjustment_history_data_bag=<factory>)[source]
Bases:
objectRepresents the overall patent term adjustment (PTA) data for an application.
Includes various delay quantities (A, B, C, applicant, IP office), total adjustment, and a history of PTA events.
-
patent_term_adjustment_history_data_bag:
List[PatentTermAdjustmentHistoryData]
-
patent_term_adjustment_history_data_bag:
- class pyUSPTO.models.patent_data.PatentTermAdjustmentHistoryData(event_date=None, applicant_day_delay_quantity=None, event_description_text=None, event_sequence_number=None, ip_office_day_delay_quantity=None, originating_event_sequence_number=None, pta_pte_code=None)[source]
Bases:
objectRepresents a single entry in the patent term adjustment (PTA) history for an application.
Details specific events, dates, and day quantities affecting the patent term.
- class pyUSPTO.models.patent_data.Person(first_name=None, middle_name=None, last_name=None, name_prefix=None, name_suffix=None, preferred_name=None, country_code=None)[source]
Bases:
objectA base data class representing a person with common name and country attributes.
This class is typically inherited by more specific types like Applicant, Inventor, or Attorney.
- class pyUSPTO.models.patent_data.PrintedMetaData(zip_file_name=None, product_identifier=None, file_location_uri=None, file_create_date_time=None, xml_file_name=None)[source]
Bases:
objectRepresents metadata for a specific archive file, such as a PGPUB or Grant XML file.
- zip_file_name
The name of the ZIP archive.
- product_identifier
An identifier for the data product (e.g., “APPXML”, “PTGRXML”).
- file_location_uri
The URI where the document file can be accessed.
- file_create_date_time
The creation timestamp of the document file.
- xml_file_name
The name of the XML file within the ZIP archive.
- class pyUSPTO.models.patent_data.PrintedPublication(pgpub_document_meta_data=None, grant_document_meta_data=None)[source]
Bases:
objectHolds metadata for associated documents like Pre-Grant Publications (PGPUB) and Grant documents for a specific patent application.
-
grant_document_meta_data:
Optional[PrintedMetaData] = None
-
pgpub_document_meta_data:
Optional[PrintedMetaData] = None
-
grant_document_meta_data:
- class pyUSPTO.models.patent_data.RecordAttorney(customer_number_correspondence_data=<factory>, power_of_attorney_bag=<factory>, attorney_bag=<factory>)[source]
Bases:
objectRepresents information about the attorney(s) of record for a patent application.
Contains customer number correspondence data, power of attorney information, and listed attorneys.
-
customer_number_correspondence_data:
List[CustomerNumberCorrespondence]
-
customer_number_correspondence_data:
- class pyUSPTO.models.patent_data.StatusCode(code=None, description=None)[source]
Bases:
objectRepresents a USPTO application status code and its textual description.
- code
The numeric status code.
- description
The textual description of the status code.
- class pyUSPTO.models.patent_data.StatusCodeCollection(status_codes)[source]
Bases:
objectA collection of StatusCode objects.
Provides iterable access and helper methods to find or filter status codes.
- class pyUSPTO.models.patent_data.StatusCodeSearchResponse(count, status_code_bag, request_identifier=None)[source]
Bases:
objectRepresents the response from a search query for patent application status codes.
- count
The total number of status codes found matching the query.
- status_code_bag
A collection of the StatusCode objects returned.
- request_identifier
An identifier for the API request.
-
status_code_bag:
StatusCodeCollection
- class pyUSPTO.models.patent_data.Telecommunication(telecommunication_number=None, extension_number=None, telecom_type_code=None)[source]
Bases:
objectRepresents telecommunication details, such as phone or fax numbers.
- telecommunication_number
The main number (e.g., phone number).
- extension_number
Any extension associated with the number.
- telecom_type_code
A code indicating the type of telecommunication (e.g., “TEL”, “FAX”).
- pyUSPTO.models.patent_data.parse_yn_to_bool(value)[source]
Converts ‘Y’/’N’ (case-insensitive) string to boolean. Returns None if input is None or not Y/N.