csl

package
v0.28.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 12, 2024 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SourceIdx = iota
	EntityNumberIdx
	TypeIdx
	ProgramsIdx
	NameIdx
	TitleIdx
	AddressesIdx
	FRNoticeIdx // Federal Register Notice
	StartDateIdx
	EndDateIdx
	StandardOrderIdx
	LicenseRequirementIdx
	LicensePolicyIdx
	CallSignIdx
	VesselTypeIdx
	GrossTonnageIdx
	GrossRegisteredTonnageIdx
	VesselFlagIdx
	VesselOwnerIdx
	RemarksIdx
	SourceListURLIdx
	AltNamesIdx
	CitizenshipsIdx
	DatesOfBirthIdx
	NationalitiesIdx
	PlacesOfBirthIdx
	SourceInformationURLIdx
	IDsIdx
)

This is the order of the columns in the CSL Source: https://legacy.trade.gov/CSL_Download_Instructions.pdf

View Source
const (
	FileGenerationDateIdx             = 0
	EntityLogicalIdx                  = 1
	ReferenceNumberIdx                = 2
	EntityRemarkIdx                   = 6
	EntitySubjectTypeIdx              = 8
	EntityRegulationPublicationURLIdx = 15

	NameAliasWholeNameIdx = 19
	NameAliasTitleIdx     = 22

	AddressCityIdx               = 34
	AddressStreetIdx             = 35
	AddressPoBoxIdx              = 36
	AddressZipCodeIdx            = 37
	AddressCountryDescriptionIdx = 43

	BirthDateIdx        = 54
	BirthDateCityIdx    = 65
	BirthDateCountryIdx = 67

	IdentificationValidFromIdx = 86
	IdentificationValidToIdx   = 87
)

header indicies

View Source
const (
	UKNameIdx      = 0
	UKNameTwoIdx   = 1
	UKNameThreeIdx = 2
	UKNameFourIdx  = 3
	UKNameFiveIdx  = 4

	UKTitleIdx         = 6
	DOBhIdx            = 10
	TownOfBirthIdx     = 11
	CountryOfBirthIdx  = 12
	UKNationalitiesIdx = 13

	AddressOneIdx   = 19
	AddressTwoIdx   = 20
	AddressThreeIdx = 21
	AddressFourIdx  = 22
	AddressFiveIdx  = 23
	AddressSixIdx   = 24

	PostalCodeIdx     = 25
	CountryIdx        = 26
	OtherInfoIdx      = 27
	GroupTypeIdx      = 28
	ListedDateIdx     = 32
	UKSancListDateIdx = 33
	LastUpdatedIdx    = 34
	GroupdIdx         = 35
)

Indices we care about for UK - CSL row data

View Source
const (
	UKSL_LastUpdatedIdx       = 0
	UKSL_UniqueIDIdx          = 1
	UKSL_OFSI_GroupIDIdx      = 2 // this is the group ID from the consolidated sanctions list
	UKSL_UNReferenceNumberIdx = 3
	// Name info
	UKSL_Name6Idx            = 4
	UKSL_Name1Idx            = 5
	UKSL_Name2Idx            = 6
	UKSL_Name3Idx            = 7
	UKSL_Name4Idx            = 8
	UKSL_Name5Idx            = 9
	UKSL_NameTypeIdx         = 10 // either Primary Name or Alias
	UKSL_AliasStrengthIdx    = 11
	UKSL_TitleIdx            = 12
	UKSL_NonLatinScriptIdx   = 13
	UKSL_NonLatinTypeIdx     = 14
	UKSL_NonLatinLanguageIdx = 15
	UKSL_EntityTypeIdx       = 17 // individual, entity, ship
	UKSL_OtherInfoIdx        = 20
	// Address Info
	UKSL_AddressLine1Idx   = 22
	UKSL_AddressLine2Idx   = 23
	UKSL_AddressLine3Idx   = 24
	UKSL_AddressLine4Idx   = 25
	UKSL_AddressLine5Idx   = 26
	UKSL_AddressLine6Idx   = 27
	UKSL_PostalCodeIdx     = 28
	UKSL_AddressCountryIdx = 29
	UKSL_CountryOfBirthIdx = 43
)

Variables

View Source
var EntityEnumMap map[UKSLEntityType]string = map[UKSLEntityType]string{
	UKSLIndividual: "Individual",
	UKSLEntity:     "Entity",
	UKSLShip:       "Ship",
}
View Source
var EntityStringMap map[string]UKSLEntityType = map[string]UKSLEntityType{
	"Individual": UKSLIndividual,
	"Entity":     UKSLEntity,
	"Ship":       UKSLShip,
}

Functions

func Download

func Download(logger log.Logger, initialDir string) (map[string]io.ReadCloser, error)

func DownloadEU added in v0.24.0

func DownloadEU(logger log.Logger, initialDir string) (map[string]io.ReadCloser, error)

func DownloadUKCSL added in v0.24.0

func DownloadUKCSL(logger log.Logger, initialDir string) (map[string]io.ReadCloser, error)

func DownloadUKSanctionsList added in v0.24.0

func DownloadUKSanctionsList(logger log.Logger, initialDir string) (map[string]io.ReadCloser, error)

func ParseEU added in v0.24.0

func ParseEU(r io.ReadCloser) ([]*EUCSLRecord, EUCSL, error)

func ParseUKCSL added in v0.24.0

func ParseUKCSL(r io.Reader) ([]*UKCSLRecord, UKCSL, error)

func ReadUKCSLFile added in v0.24.0

func ReadUKCSLFile(fd io.ReadCloser) ([]*UKCSLRecord, UKCSL, error)

func ReadUKSanctionsListFile added in v0.24.0

func ReadUKSanctionsListFile(f io.ReadCloser) ([]*UKSanctionsListRecord, UKSanctionsListMap, error)

Types

type Address added in v0.24.0

type Address struct {
	City    string `json:"city"`
	Street  string `json:"street"`
	PoBox   string `json:"poBox"`
	ZipCode string `json:"zipCode"`
	// Region             string
	// Place              string
	// AsAtListingTime    string
	// ContactInfo        string
	// CountryIso2code    string
	CountryDescription string `json:"countryDescription"`
}

type BirthDate added in v0.24.0

type BirthDate struct {
	BirthDate string // keep
	// Day                int64
	// Month              int64
	// Year               int64
	// YearRangeFrom      string
	// YearRangeTo        string
	// Circa              string
	// CaldendarType      string
	// ZipCode            string
	// Region             string
	// Place              string
	City string `json:"city"`
	// CountryIso2code    string
	CountryDescription string `json:"countryDescription"`
}

type CAP added in v0.23.0

type CAP struct {
	EntityID       string   `json:"entityID"`
	EntityNumber   string   `json:"entityNumber"`
	Type           string   `json:"type"`
	Programs       []string `json:"programs"`
	Name           string   `json:"name"`
	Addresses      []string `json:"addresses"`
	Remarks        []string `json:"remarks"`
	SourceListURL  string   `json:"sourceListURL,omitempty"`
	AlternateNames []string `json:"alternamteNames,omitempty"`
	SourceInfoURL  string   `json:"sourceInfoURL"`
	IDs            []string `json:"IDs"`
}

type CMIC added in v0.23.0

type CMIC struct {
	EntityID       string   `json:"entityID"`
	EntityNumber   string   `json:"entityNumber"`
	Type           string   `json:"type"`
	Programs       []string `json:"programs"`
	Name           string   `json:"name"`
	Addresses      []string `json:"addresses"`
	Remarks        []string `json:"remarks,omitempty"`
	SourceListURL  string   `json:"sourceListURL"`
	AlternateNames []string `json:"alternateNames"`
	SourceInfoURL  string   `json:"sourceInfoURL"`
	IDs            []string `json:"IDs"`
}

type CSL

type CSL struct {
	ELs     []*EL     // Entity List – Bureau of Industry and Security
	MEUs    []*MEU    // Military End User List
	SSIs    []*SSI    // Sectoral Sanctions Identifications List (SSI) - Treasury Department
	UVLs    []*UVL    // Unverified List – Bureau of Industry and Security
	FSEs    []*FSE    // Foreign Sanctions Evaders (FSE) - Treasury Department
	ISNs    []*ISN    // Nonproliferation Sanctions (ISN) - State Department
	PLCs    []*PLC    // Palestinian Legislative Council List (PLC) - Treasury Department
	CAPs    []*CAP    // CAPTA (formerly Foreign Financial Institutions Subject to Part 561 - Treasury Department)
	DTCs    []*DTC    // ITAR Debarred (DTC) - State Department
	CMICs   []*CMIC   // Non-SDN Chinese Military-Industrial Complex Companies List (CMIC) - Treasury Department
	NS_MBSs []*NS_MBS // Non-SDN Menu-Based Sanctions List (NS-MBS List) - Treasury Department
}

CSL contains each record from the Consolidate Screening List, broken down by the record's original source

func Parse added in v0.22.0

func Parse(r io.Reader) (*CSL, error)

func ReadFile added in v0.22.0

func ReadFile(fd io.ReadCloser) (*CSL, error)

type DTC added in v0.23.0

type DTC struct {
	EntityID              string   `json:"entityID"`
	Name                  string   `json:"name"`
	FederalRegisterNotice string   `json:"federalRegisterNotice"`
	SourceListURL         string   `json:"sourceListURL"`
	AlternateNames        []string `json:"alternateNames,omitempty"`
	SourceInfoURL         string   `json:"sourceInfoURL"`
}

type EL

type EL struct {
	// ID is the unique identifier for the entity
	ID string `json:"id"`
	// Name is the primary name of the entity
	Name string `json:"name"`
	// AlternateNames is a list of aliases associated with the entity
	AlternateNames []string `json:"alternateNames"`
	// Addresses is a list of known addresses associated with the entity
	Addresses []string `json:"addresses"`
	// StartDate is the effective date
	StartDate string `json:"startDate"`
	// LicenseRequirement specifies the license requirements that it imposes on each listed person
	LicenseRequirement string `json:"licenseRequirement"`
	// LicensePolicy is the policy with which BIS reviews the requirements set forth in License Requirements
	LicensePolicy string `json:"licensePolicy"`
	// FRNotice identifies the notice in the Federal Register
	FRNotice string `json:"FRNotice"`
	// SourceListURL is a link to the official SSI list
	SourceListURL string `json:"sourceListURL"`
	// SourceInfoURL is a link to information about the list
	SourceInfoURL string `json:"sourceInfoURL"`
}

EL is the Entity List (EL) - Bureau of Industry and Security

type EUCSL added in v0.24.0

type EUCSL map[int]*EUCSLRecord

struct to hold the rows from the csv data before merge

type EUCSLRecord added in v0.24.0

type EUCSLRecord struct {
	FileGenerationDate         string            `json:"fileGenerationDate"`
	EntityLogicalID            int               `json:"entityLogicalId"`
	EntityRemark               string            `json:"entityRemark"`
	EntitySubjectType          string            `json:"entitySubjectType"`
	EntityPublicationURL       string            `json:"entityPublicationURL"`
	EntityReferenceNumber      string            `json:"entityReferenceNumber"`
	NameAliasWholeNames        []string          `json:"nameAliasWholeNames"`
	NameAliasTitles            []string          `json:"nameAliasTitles"`
	AddressCities              []string          `json:"addressCities"`
	AddressStreets             []string          `json:"addressStreets"`
	AddressPoBoxes             []string          `json:"addressPoBoxs"`
	AddressZipCodes            []string          `json:"addressZipCodes"`
	AddressCountryDescriptions []string          `json:"addressCountryDescriptions"`
	BirthDates                 []string          `json:"birthDates"`
	BirthCities                []string          `json:"birthCities"`
	BirthCountries             []string          `json:"birthCountries"`
	ValidFromTo                map[string]string `json:"validFromTo"`
}

type EUCSLRow added in v0.24.0

type EUCSLRow struct {
	FileGenerationDate string            `json:"fileGenerationDate"`
	Entity             *Entity           `json:"entity"`
	NameAliases        []*NameAlias      `json:"nameAliases"`
	Addresses          []*Address        `json:"addresses"`
	BirthDates         []*BirthDate      `json:"birthDates"`
	Identifications    []*Identification `json:"identifications"`
}

below is the original struct used to parse the document fields commented out are not parsed this was refactored to be a flatter structure but is left in for documentation use the EUCSLRecord struct above

type Entity added in v0.24.0

type Entity struct {
	LogicalID       int    `json:"logicalId"`
	ReferenceNumber string `json:"referenceNumber"`
	// UnitiedNationsID   string
	// DesignationDate    string
	// DesignationDetails string
	Remark      string       `json:"remark"`
	SubjectType *SubjectType `json:"subjectType"`
	Regulation  *Regulation  `json:"regulation"`
}

type FSE added in v0.23.0

type FSE struct {
	EntityID      string   `json:"entityID"`
	EntityNumber  string   `json:"entityNumber"`
	Type          string   `json:"type"`
	Programs      []string `json:"programs"`
	Name          string   `json:"name"`
	Addresses     []string `json:"addresses,omitempty"`
	SourceListURL string   `json:"sourceListURL"`
	Citizenships  string   `json:"citizenships,omitempty"`
	DatesOfBirth  string   `json:"datesOfBirth"`
	SourceInfoURL string   `json:"sourceInfoURL"`
	IDs           []string `json:"IDs"`
}

type ISN added in v0.23.0

type ISN struct {
	EntityID              string   `json:"entityID"`
	Programs              []string `json:"programs"`
	Name                  string   `json:"name"`
	FederalRegisterNotice string   `json:"federalRegisterNotice"`
	StartDate             string   `json:"startDate"`
	Remarks               []string `json:"remarks,omitempty"`
	SourceListURL         string   `json:"sourceListURL"`
	AlternateNames        []string `json:"alternateNames,omitempty"`
	SourceInfoURL         string   `json:"sourceInfoURL"`
}

type Identification added in v0.24.0

type Identification struct {
	// Regulation         *Regulation
	// Number             int64
	// KnownExpired       bool
	// KnownFalse         bool
	// ReportedLost       bool
	// RevokedByIssuer    bool
	// LogicalID          int64
	// Diplomatic         string
	// IssuedBy           string
	// IssuedDate         string
	ValidFrom string `json:"validFrom"`
	ValidTo   string `json:"validTo"`
}

type MEU added in v0.22.0

type MEU struct {
	EntityID  string `json:"entityID"`
	Name      string `json:"name"`
	Addresses string `json:"addresses"`
	FRNotice  string `json:"FRNotice"`
	StartDate string `json:"startDate"`
	EndDate   string `json:"endDate"`
}

type NS_MBS added in v0.23.0

type NS_MBS struct {
	EntityID       string   `json:"entityID"`
	EntityNumber   string   `json:"entityNumber"`
	Type           string   `json:"type"`
	Programs       []string `json:"programs"`
	Name           string   `json:"name"`
	Addresses      []string `json:"addresses"`
	Remarks        []string `json:"remarks,omitempty"`
	AlternateNames []string `json:"alternateNames,omitempty"`
	SourceInfoURL  string   `json:"sourceInfoURL"`
	IDs            []string `json:"IDs"`
}

type NameAlias added in v0.24.0

type NameAlias struct {
	// LastName           string
	// FirstName          string
	// MiddleName         string
	WholeName string `json:"wholeName"`
	// NameLanguage       string
	// Gender             string
	Title string `json:"title"`
}

type PLC added in v0.23.0

type PLC struct {
	EntityID       string   `json:"entityID"`
	EntityNumber   string   `json:"entityNumber"`
	Type           string   `json:"type"`
	Programs       []string `json:"programs"`
	Name           string   `json:"name"`
	Addresses      []string `json:"addresses,omitempty"`
	Remarks        string   `json:"remarks"`
	SourceListURL  string   `json:"sourceListURL"`
	AlternateNames []string `json:"alternateNames,omitempty"`
	DatesOfBirth   string   `json:"datesOfBirth,omitempty"`
	PlacesOfBirth  string   `json:"placesOfBirth,omitempty"`
	SourceInfoURL  string   `json:"sourceInfoURL"`
}

type Regulation added in v0.24.0

type Regulation struct {
	// Type               string
	// OrganizationType   string
	// PublicationDate    string
	// EntryInfoForceDate string
	// NumberTitle        string
	// Programme          string
	PublicationURL string `json:"publicationURL"`
}

type SSI

type SSI struct {
	// EntityID (ent_num) is the unique record identifier/unique listing identifier
	EntityID string `json:"entityID"`
	// Type is the entity type (e.g. individual, vessel, aircraft, etc)
	Type string `json:"type"`
	// Programs is the list of sanctions program for which the entity is flagged
	Programs []string `json:"programs"`
	// Name is the entity's name (e.g. given name for individual, company name, etc.)
	Name string `json:"name"`
	// Addresses is a list of known addresses associated with the entity
	Addresses []string `json:"addresses"`
	// Remarks is used to provide additional details for the entity
	Remarks []string `json:"remarks"`
	// AlternateNames is a list of aliases associated with the entity
	AlternateNames []string `json:"alternateNames"`
	// IDsOnRecord is a list of the forms of identification on file for the entity
	IDsOnRecord []string `json:"ids"`
	// SourceListURL is a link to the official SSI list
	SourceListURL string `json:"sourceListURL"`
	// SourceInfoURL is a link to information about the list
	SourceInfoURL string `json:"sourceInfoURL"`
}

SSI is the Sectoral Sanctions Identifications List - Treasury Department

type SubjectType added in v0.24.0

type SubjectType struct {
	// SingleLetter       string
	ClassificationCode string `json:"classificationCode"`
}

type UKCSL added in v0.24.0

type UKCSL map[int]*UKCSLRecord

type UKCSLRecord added in v0.24.0

type UKCSLRecord struct {
	Names             []string `json:"names"`
	Titles            []string `json:"titles"`
	DatesOfBirth      []string `json:"datesOfBirth"`
	TownsOfBirth      []string `json:"townsOfBirth"`
	CountriesOfBirth  []string `json:"countriesOfBirth"`
	Nationalities     []string `json:"nationalities"`
	Addresses         []string `json:"addresses"`
	PostalCodes       []string `json:"postalCodes"`
	Countries         []string `json:"countries"`
	OtherInfos        []string `json:"otherInfo"`
	GroupType         string   `json:"groupType"`
	ListedDates       []string `json:"listedDate"`
	SanctionListDates []string `json:"sanctionListDate"`
	LastUpdates       []string `json:"lastUpdated"`
	GroupID           int      `json:"groupId"`
}

UK is the UK Consolidated List of Financial Sanctions Targets

type UKSLEntityType added in v0.24.0

type UKSLEntityType string
const (
	Undefined      UKSLEntityType = ""
	UKSLIndividual UKSLEntityType = "Individual"
	UKSLEntity     UKSLEntityType = "Entity"
	UKSLShip       UKSLEntityType = "Ship"
)

func (UKSLEntityType) String added in v0.24.0

func (et UKSLEntityType) String() string

type UKSanctionsListMap added in v0.24.0

type UKSanctionsListMap map[string]*UKSanctionsListRecord

type UKSanctionsListRecord added in v0.24.0

type UKSanctionsListRecord struct {
	LastUpdated         string
	UniqueID            string
	OFSIGroupID         string
	UNReferenceNumber   string
	Names               []string
	NameTitle           string
	NonLatinScriptNames []string
	EntityType          *UKSLEntityType
	Addresses           []string
	StateLocalities     []string
	AddressCountries    []string
	CountryOfBirth      string
}

type UVL added in v0.23.0

type UVL struct {
	EntityID      string   `json:"entityID"`
	Name          string   `json:"name"`
	Addresses     []string `json:"addresses"`
	SourceListURL string   `json:"sourceListURL"`
	SourceInfoURL string   `json:"sourceInfoURL"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL