-
Notifications
You must be signed in to change notification settings - Fork 4
TSDRMap contents
The TSDRMap
is a dictionary containing a series of attributes of the requested trademark application or registration. Most of the entries are simple strings. For example, for the key ApplicationNumber
, the value is an eight-character string that represents the application number, e.g. "86799303".
Certain data occurs more than once, and so cannot be represented as a single string. In these cases, the entry is a list, and each item in the list is itself a dictionary. For example, during the course of a trademark application it will have many events: the initial application, perhaps multiple office actions, publication, registration, renewals, etc. These are represented by a list of Mark Events. The TSDRMap
entry with the key MarkEventList
is a list of dictionaries, each one of which corresponds to a single Mark Event. For example, there will generally be an element in the list representing the initial application. That element will be represented by a dictionary; and in that dictionary, the entry with the key MarkEventDescription
will be something like "NEW APPLICATION ENTERED IN TRAM" (the PTO's use of the acronym "TRAM" here refers to the PTO's Trademark Reporting and Monitoring system).
Any entry that contains a list rather than a simple string is denoted by a key that ends in "List"; and no non-list entries have a key that ends in "List".
The basic examples provide illustrations in several languages (Python, C#, Visual Basic .NET and C++ .NET) of retrieving both types of data. They show retrieval of simple one-value strings such as the application serial number (ApplicationNumber
), the text of the trademark (MarkVerbalElementText
), the application filing date (ApplicationDate
) and registration number (RegistrationNumber
). In Python:
print "Application serial no: ", t.TSDRMap["ApplicationNumber"] print "Trademark text: ", t.TSDRMap["MarkVerbalElementText"] print "Application filing date: ", t.TSDRMap["ApplicationDate"] print "Registration no: ", t.TSDRMap["RegistrationNumber"]
In addition, the examples show the retrieval of the most recent (0th) owner name (ApplicantName
) and address (ApplicantCombinedAddress
) from the applicant list (ApplicantList
); and the date of the most recent (0th) prosecution event (MarkEventDate
) and its description (MarkEventDescription
) from the Mark Event list (MarkEventList
). In Python:
# Owner info is in most recent (0th) entry in ApplicantList applicant_list = t.TSDRMap["ApplicantList"] current_owner_info = applicant_list[0] print "Owner:", current_owner_info["ApplicantName"] print "Owner address: ", current_owner_info["ApplicantCombinedAddress"] # Get most recent event: 0th entry in event list event_list = t.TSDRMap["MarkEventList"] most_recent_event = event_list[0] print "Most recent event: ", most_recent_event["MarkEventDescription"] print "Event date: ", most_recent_event["MarkEventDate"]
Currently, Plumage reports three types of list data:
-
ApplicantList
: Information about applicant or owner at various stages of prosecution; -
MarkEventList
: Information about events at various stages of prosecution; -
AssignmentList
: Information about assignment or other transfers of ownership of the trademark or trademark application.
In almost every case, data is returned in exactly the same format as provided by the PTO. For example, an application number is an eight-digit string such as "86799303", even though PTO documents may refer to it as "86/799,303" (meaning series 86, application serial no. 799,303). However, Plumage also provides what I call "convenience values" that are derived from values provided by the PTO as a convenience to the programmer. These are primarily used for dates and addresses. In addition, Plumage generates diagnostic data about the execution of Plumage itself for use in debugging (see "Diagnostic Data", below).
The PTO provides several dates in a format that includes a time of day, usually one that has no significance (almost always being "04:00" or "05:00"). For example, the application date may be provided in the form "2015-10-26-04:00", and the key ApplicationDate
will have a value "2015-10-26-04:00". However, because most programs will want to ignore the superfluous "-04:00", the key ApplicationDateTruncated
is also provided, having a value "2015-10-26". Most applications will probably want to use the truncated form.
The PTO reports address information as several discrete pieces of information. For instance, the address of the correspondent is reported as six separate items: two lines of address (CorrespondentAddressLine01
, usually a street address, e.g., "1234 Gladys Ave.", or a post office box; and CorrespondentAddressLine02
usually blank, but potentially including floor or suite information); a city (CorrespondentAddressCity
); a geographic region (CorrespondentAddressGeoRegion
, usually a state or province); a postal code (CorrespondentPostalCode
, generally a ZIP code); and a country (CorrespondentCountryCode
). If a program wants to check to see if the address has changed, it needs to check six separate fields so see whether any of them have changed.
To simplify this, Plumage provides a "combined address" (e.g. CorrespondentCombinedAddress
) that consists of all of these fields concatenated, separated by a '/'; for example: "1234 Gladys Ave.//Lakewood/Ohio/44107-2510/US". A program monitoring for changes to the address can simply check the CorrespondentCombinedAddress
field rather than each of its individual constituents. Note, though, that a program preparing letters or mailing labels will probably want to use the individual fields and construct the address from them.
In general, Plumage uses as its key names the same names used as XML tags in the data provided by the PTO. When different names are used by the PTO in ST.66 and ST.96 format, ST.66 is usually preferred. In some cases, for example, where the same names are used in the XML files for multiple purposes, the key names are qualified.
In the tables below, the following information is presented:
- Plumage key name;
- Short description of the data;
- One or more identifiers sufficient to locate the data in the PTO XML files;
- The equivalent label as used by the PTO on TSDR;
- Notes, if applicable.
This section describes content where there is one unique value for a particular trademark application (such as the application number, for example). Data that is reported as a list (mark events, applicants and assignments) are set out under "Recurring entries" below). For convenience, the data is broken out by what type of information is provided.
Plumage key |
ApplicationNumber
|
Description | application serial number |
XML field name |
ST.66: ApplicationNumber ST.96: ApplicationNumberText |
TSDR field label | US Serial Number |
Plumage key |
ApplicationDate
|
Description | application filing date |
XML field name | ApplicationDate |
TSDR field label | Application Filing Date |
Plumage key |
ApplicationDateTruncated
|
Description | application filing date, truncated to date-only (convenience value) |
XML field name | derived from ApplicationDate, above |
TSDR field label | Application Filing Date |
Plumage key |
RegistrationNumber
|
Description | registration number, if any; empty string otherwise |
XML field name | RegistrationNumber |
TSDR field label | US Registration Number |
Plumage key |
RegistrationDate
|
Description | registration date, if any; empty string otherwise |
XML field name | RegistrationDate |
TSDR field label | Registration Date |
Plumage key |
RegistrationDateTruncated
|
Description | registration date, if any, truncated to date-only; empty string otherwise (convenience value) |
XML field name | derived from RegistrationDate, above |
TSDR field label | Registration Date |
Plumage key |
MarkCurrentStatusDate
|
Description | date of the current status of the trademark |
XML field name | MarkCurrentStatusDate |
TSDR field label | Status Date |
Plumage key |
MarkCurrentStatusDateTruncated
|
Description | status date, truncated to date-only (convenience value) |
XML field name | derived from MarkCurrentStatusDate, above |
TSDR field label | Status Date |
Plumage key |
MarkCurrentStatusExternalDescriptionText
|
Description | long status description, human-readable |
XML field name | MarkCurrentStatusExternalDescriptionText |
TSDR field label | Status |
Plumage key |
MarkVerbalElementText
|
Description | text of trademark |
XML field name | MarkVerbalElementText |
TSDR field label | Mark |
Plumage key |
PublicationDate
|
Description | publication date, if any; empty string otherwise |
XML field name | PublicationDate |
TSDR field label | Publication Date |
Plumage key |
PublicationDateTruncated
|
Description | publication date, if any, truncated to date-only; empty string otherwise |
XML field name | derived from PublicationDate, above |
TSDR field label | Publication Date |
Plumage key |
RegisterCategory
|
Description | register (Primary or Secondary) on which the mark is registered or sought to be registered |
XML field name | RegisterCategory |
TSDR field label | Register |
Notes | In ST.66, the PTO reports this as "Principal" or "Supplemental". In ST.96, the PTO reports this as "Primary" or "Supplemental". Regardless of source, Plumage reports this as "Principal" or "Supplemental", using the statutory terminology. 15 U.S.C. §§ 1051, 1091. |
Plumage key |
RenewalDate
|
Description | renewal date, if any; empty string otherwise |
XML field name | RenewalDate |
TSDR field label | Renewal Date (section "Maintenance Filings or Post Registration Information") |
Plumage key |
RenewalDateTruncated
|
Description | renewal date, if any, truncated to date-only; empty string otherwise |
XML field name | derived from RenewalDate, above |
TSDR field label | Renewal Date (section "Maintenance Filings or Post Registration Information") |
Plumage key |
InternationalApplicationNumber
|
Description | international application no., if any |
XML field name |
ST.66: InternationalApplicationNumber ST.96: ApplicationNumber/ApplicationNumberText (where the AssociationCategory is 'International application or registration') |
TSDR field label | International Application(s)/Registration(s) Based on this Property (section "Related Properties Information") |
Plumage key |
InternationalRegistrationNumber
|
Description | international registration no., if any |
XML field name | InternationalRegistrationNumber |
TSDR field label | International Registration Number (section "Related Properties Information") |
Plumage key |
LawOfficeAssignedText
|
Description | office at the PTO to which the case is assigned |
XML field name | LawOfficeAssignedText |
TSDR field label | Law Office Assigned (section "TM Staff and Location Information") |
Plumage key |
CurrentLocationText
|
Description | location of trademark file at PTO |
XML field name | CurrentLocationText |
TSDR field label | Current Location (section "TM Staff and Location Information") |
Plumage key |
CurrentLocationCode
|
Description | code corresponding to CurrentLocationText |
XML field name | CurrentLocationCode |
TSDR field label | N/A |
Plumage key |
CurrentLocationDate
|
Description | date in current location |
XML field name | CurrentLocationDate |
TSDR field label | Date in Location (section "TM Staff and Location Information") |
Plumage key |
CurrentLocationDateTruncated
|
Description | date in current location, truncated to date-only |
XML field name | derived from CurrentLocationDate, above |
TSDR field label | Date in Location (section "TM Staff and Location Information") |
Plumage key |
StaffName
|
Description | name of individual, if any, at the PTO to whom the case is assigned; empty string otherwise |
XML field name | StaffName |
TSDR field label | TM Attorney (section "TM Staff and Location Information") |
Plumage key |
StaffOfficialTitle
|
Description |
title of individual named in StaffName ; empty string otherwise
|
XML field name | OfficialTitle |
TSDR field label | N/A |
Plumage key |
CorrespondentName
|
Description | name of correspondent listed for applicant |
XML field name |
ST.66: Representative (where Comment = 'Domestic Correspondent') / ... / FreeFormatNameLine[1] ST.96: NationalCorrespondent / ... / PersonFullName |
TSDR field label | Correspondent: Correspondent (section "Attorney/Correspondence Information") |
Plumage key |
CorrespondentOrganization
|
Description | organization of correspondent |
XML field name |
ST.66: Representative (where Comment = 'Domestic Correspondent') / ... / FreeFormatNameLine[2] ST.96: NationalCorrespondent / ... / OrganizationStandardName |
TSDR field label | Correspondent: Name/Address (section "Attorney/Correspondence Information") |
Plumage key |
CorrespondentAddressLine01
|
Description | correspondent address, line 1 |
XML field name |
ST.66: Representative (where Comment = 'Domestic Correspondent') / ... / AddressBuilding ST.96: NationalCorrespondent / ... / AddressLineText (where sequenceNumber = '1') |
TSDR field label | Correspondent: Name/Address (section "Attorney/Correspondence Information") |
Plumage key |
CorrespondentAddressLine02
|
Description | correspondent address, line 2 |
XML field name |
ST.66: Representative (where Comment = 'Domestic Correspondent') / ... / AddressStreet ST.96: NationalCorrespondent / ... / AddressLineText (where sequenceNumber = '2') |
TSDR field label | Correspondent: Name/Address (section "Attorney/Correspondence Information") |
Plumage key |
CorrespondentAddressCity
|
Description | city for correspondent |
XML field name |
ST.66: Representative (where Comment = 'Domestic Correspondent') / ... / AddressCity ST.96: NationalCorrespondent / ... / CityName |
TSDR field label | Correspondent: Name/Address (section "Attorney/Correspondence Information") |
Plumage key |
CorrespondentAddressGeoRegion
|
Description | geographical region (usually state or province) for correspondent |
XML field name |
ST.66: Representative (where Comment = 'Domestic Correspondent') / ... / AddressState ST.96: NationalCorrespondent / ... / GeographicRegionName |
TSDR field label | Correspondent: Name/Address (section "Attorney/Correspondence Information") |
Plumage key |
CorrespondentPostalCode
|
Description | postal code (e.g., ZIP code) for correspondent |
XML field name |
ST.66: Representative (where Comment = 'Domestic Correspondent') / ... / AddressPostcode ST.96: NationalCorrespondent / ... / PostalCode |
TSDR field label | Correspondent: Name/Address (section "Attorney/Correspondence Information") |
Plumage key |
CorrespondentCountryCode
|
Description | ISO 3166 country code for correspondent |
XML field name |
ST.66: Representative (where Comment = 'Domestic Correspondent') / ... / FormattedAddressCountryCode ST.96: NationalCorrespondent / ... / CountryCode |
TSDR field label | Correspondent: Name/Address (section "Attorney/Correspondence Information") |
Plumage key |
CorrespondentCombinedAddress
|
Description |
multiple name/address values for correspondent (convenience value); CorrespondentName, CorrespondentOrganization, CorrespondentAddressLine01, CorrespondentAddressLine02, CorrespondentAddressCity, CorrespondentAddressGeoRegion, CorrespondentPostalCode and CorrespondentCountryCode, seperated by the '/' character. |
XML field name | multiple |
TSDR field label | Correspondent: Name/Address (section "Attorney/Correspondence Information") |
Notes | See section Addresses, above]. |
Plumage key |
CorrespondentPhoneNumber
|
Description | telephone number for correspondent |
XML field name |
ST.66: Representative (where Comment = 'Domestic Correspondent') / ... / Phone ST.96: NationalCorrespondent / ... / PhoneNumber |
TSDR field label | Correspondent: Phone (section "Attorney/Correspondence Information") |
Plumage key |
CorrespondentFaxNumber
|
Description | fax number for correspondent |
XML field name |
ST.66: Representative (where Comment = 'Domestic Correspondent') / ... / Fax ST.96: NationalCorrespondent / ... / FaxNumber |
TSDR field label | Correspondent: Fax (section "Attorney/Correspondence Information") |
Plumage key |
CorrespondentEmailAddress
|
Description | email address for correspondent |
XML field name |
ST.66: Representative (where Comment = 'Domestic Correspondent') / ... / Email ST.96: NationalCorrespondent / ... / EmailAddressText |
TSDR field label | Correspondent: Correspondent e-mail (section "Attorney/Correspondence Information") |
The fields listed here are for purposes of audit, debugging and other documentation purposes. They are generated by Plumage itself at runtime, and do not correspond to any data supplied by the PTO. They have no corresponding XML field name or TSDR field label.
In the descriptions below, "XML file" refers to the XML file containing the TSDR data (generally provided at least initially by the PTO); "XSL file" refers to the XSL file used to transform the XML file; and "Plumage implementation" refers to the callable Plumage program (e.g., Plumage-py or Plumage-dotnet).
Plumage key |
DiagnosticInfoXSLTFilename
|
Description | name of the XSL file |
Plumage key |
DiagnosticInfoXSLTLocation
|
Description | location of the XSL file |
Plumage key |
DiagnosticInfoXSLTVersion
|
Description | XSL file version information |
Plumage key |
DiagnosticInfoXSLTDate
|
Description | date of the XSL file |
Plumage key |
DiagnosticInfoXSLTFormat
|
Description | XML format that the XSL file is designed to parse ("ST.66" or "ST.96") |
Plumage key |
DiagnosticInfoXSLTAuthor
|
Description | author of XSL file |
Plumage key |
DiagnosticInfoXSLTURL
|
Description | URL for XSL file development |
Plumage key |
DiagnosticInfoXSLTCopyright
|
Description | copyright information/notice for XSL file |
Plumage key |
DiagnosticInfoXSLTLicense
|
Description | license information for XSL file |
Plumage key |
DiagnosticInfoXSLTLicenseURL
|
Description | license URL for XSL file |
Plumage key |
DiagnosticInfoImplementationName
|
Description | Name of the Plumage implementation (e.g., "Plumage-dotnet", "Plumage-py") |
Plumage key |
DiagnosticInfoImplementationVersion
|
Description | Plumage implementation version information |
Plumage key |
DiagnosticInfoImplementationDate
|
Description | date of the Plumage implementation |
Plumage key |
DiagnosticInfoImplementationAuthor
|
Description | author of the Plumage implementation |
Plumage key |
DiagnosticInfoImplementationURL
|
Description | URL for Plumage implementation development |
Plumage key |
DiagnosticInfoImplementationCopyright
|
Description | copyright information/notice for Plumage implementation development |
Plumage key |
DiagnosticInfoImplementationLicense
|
Description | license information for Plumage implementation |
Plumage key |
DiagnosticInfoImplementationLicenseURL
|
Description | license URL for Plumage implementation |
Plumage key |
DiagnosticInfoExecutionDateTime
|
Description | date and time of Plumage execution |
Plumage key |
DiagnosticInfoXMLSource
|
Description | source (URL or other location) of XML file |
Plumage key |
DiagnosticInfoXSLProcessorVersion
|
Description | version number of XSL processor |
Plumage key |
DiagnosticInfoXSLProcessorVendor
|
Description | vendor information for XSL processor |
Plumage key |
DiagnosticInfoXSLProcessorVendorURL
|
Description | URL of XSL processor vendor |
Recurring data is data that can occur multiple times for a trademark. For example, typically a number of events will occur in the course of a trademark registrations lifetime:
- An application is filed;
- the application is assigned to a PTO trademark examiner;
- the examiner issues an office action;
- the applicant responds to the office action;
- the application is approved for publication;
- the application is published;
- the mark is registered.
Plumage provides three lists of recurring data:
-
MarkEventList
: Information about events at various stages of prosecution ("Mark Events"); -
ApplicantList
: Information about applicant or owner at various stages of prosecution ("Applicants"); -
AssignmentList
: Information about assignment or other transfers of ownership of the trademark or trademark application. ("Assignments")
In Plumage-py, each corresponding entry is a Python list
; and each entry in the list is a dictionary whose keys and data are each string
s.
In Plumage-dotnet, each corresponding entry is of type ArrayList
; and each entry in the ArrayList
is of type Dictionary<string, Object>
, whose keys and data are each string
s.
Each of the lists is documented in further detail below. See "Basic examples" to see how these lists can be accessed.
Plumage key |
MarkEventEntryNumber
|
Description | number associated with the event as supplied by the PTO. The PTO numbers the first event "1" and the number increments with each succeeding event. |
XML field name | MarkEventEntryNumber |
TSDR field label | N/A |
Plumage key |
MarkEventDate
|
Description | date of the mark event |
XML field name | MarkEventDate |
TSDR field label | Date (section "Prosecution History") |
Plumage key |
MarkEventDateTruncated
|
Description | date of the mark event, truncated to date-only (convenience value) |
XML field name | MarkEventEntryNumber |
TSDR field label | Date (section "Prosecution History") |
Plumage key |
MarkEventDescription
|
Description | description of the mark event |
XML field name |
ST66: MarkEventInternalDescriptionText ST96: MarkEventDescriptionText |
TSDR field label | Description (section "Prosecution History") |
(still under construction)
(still under construction)