goesi

package module
v0.0.37 Latest Latest
Warning

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

Go to latest
Published: Jul 22, 2026 License: MIT Imports: 15 Imported by: 3

README

GoESI OpenAPI Client

Go Version License

A Go client library for the EVE Online ESI API, generated from the official OpenAPI specification.

About

This library is a spiritual successor to the original goesi package, updated to support CCP's OpenAPI 3.x+ specification. When CCP migrated ESI to OpenAPI 3.0+, a new code generation approach was needed to maintain compatibility with the updated specification format.

Installation

go get github.com/fnt-eve/goesi-openapi

Quick Start

Public API (No Authentication)
package main

import (
    "context"
    "log"

    "github.com/fnt-eve/goesi-openapi"
)

func main() {
    ctx := context.Background()
    
    // Create client for public endpoints
    client := goesi.NewPublicESIClient("MyApp/1.0 (contact@example.com)")
    
    // Get system information
    system, _, err := client.UniverseAPI.GetUniverseSystemsSystemId(ctx, 30000142).Execute()
    if err != nil {
        log.Fatal(err)
    }
    
    log.Printf("System: %s", system.GetName())
}
Authenticated API
package main

import (
    "context"
    "log"
    "os"

    "github.com/fnt-eve/goesi-openapi"
)

func main() {
    ctx := context.Background()
    
    // Set up OAuth2
    clientID := os.Getenv("ESI_CLIENT_ID")
    redirectURL := "http://localhost:8080/callback"
    
    // Create JWT key function for token validation
    keyFunc, err := goesi.ESIDefaultKeyfunc(ctx)
    if err != nil {
        log.Fatal(err)
    }
    
    // Create OAuth2 config
    config, err := goesi.NewConfig(clientID, redirectURL, &keyFunc)
    if err != nil {
        log.Fatal(err)
    }
    
    // Get authorization URL with requested scopes
    state := "random-state-string"
    scopes := []string{goesi.ScopeLocationReadLocationV1}
    authURL := config.AuthURL(state, scopes)
    log.Printf("Visit: %s", authURL)
    
    // Exchange code for token (after user authorization)
    // var code string // Get this from the callback
    // token, claims, err := config.Exchange(ctx, code, state, state)
    // if err != nil {
    //     log.Fatal(err)
    // }
    
    // Create authenticated client
    // client := goesi.NewAuthenticatedESIClient(ctx, config, token, "MyApp/1.0 (contact@example.com)")
}

OAuth2 Authentication

ESI uses OAuth2 with PKCE. The authentication flow:

  1. Create config with client ID and redirect URL
  2. Generate auth URL with requested scopes and redirect user to authorize
  3. Exchange code for access token
  4. Use token to make authenticated API calls
  5. Refresh token when it expires
Available Scopes

The library includes constants for all ESI scopes:

scopes := []string{
    goesi.ScopeLocationReadLocationV1,
    goesi.ScopeAssetsReadAssetsV1, 
    goesi.ScopeSkillsReadSkillsV1,
    goesi.ScopeCorporationsReadBlueprintsV1,
    // ... many more
}
JWT Token Information

Access tokens are JWTs containing character information. The Exchange method returns both the token and parsed claims:

// Exchange authorization code for token and claims
token, claims, err := config.Exchange(ctx, code, state, state)
if err != nil {
    log.Fatal(err)
}

// Extract character information from claims
characterID, err := claims.CharacterID()    // int32
characterName := claims.Name                 // string
scopes := claims.Scopes                      // []string

API Usage

The generated client provides access to all ESI endpoints through API groups:

client := goesi.NewPublicESIClient("MyApp/1.0 (contact@example.com)")

// Character information
client.CharacterAPI.GetCharactersCharacterId(ctx, characterID)

// Market data  
client.MarketAPI.GetMarketsRegionIdOrders(ctx, regionID)

// Universe data
client.UniverseAPI.GetUniverseSystemsSystemId(ctx, systemID)

// Corporation data
client.CorporationAPI.GetCorporationsCorporationId(ctx, corporationID)

// Alliance data
client.AllianceAPI.GetAlliancesAllianceId(ctx, allianceID)

Error Handling

data, response, err := client.CharacterAPI.GetCharactersCharacterId(ctx, characterID).Execute()
if err != nil {
    if apiErr, ok := err.(*esi.GenericOpenAPIError); ok {
        log.Printf("API Error: %s", apiErr.Error())
        log.Printf("Response: %s", apiErr.Body())
    } else {
        log.Printf("Other error: %v", err)
    }
    return
}

Token Management

// Check if token needs refresh
if goesi.IsExpired(token) {
    newToken, newClaims, err := config.RefreshToken(ctx, token)
    if err != nil {
        log.Fatal("Token refresh failed:", err)
    }
    token = newToken
    claims = newClaims
}

// Store/load tokens (stores only the oauth2.Token, not claims)
tokenJSON, _ := goesi.TokenToJSON(token)
// Store tokenJSON in database/file

// Later: restore token and parse claims
storedToken, _ := goesi.TokenFromJSON(tokenJSON)
claims, err := config.ParseClaims(storedToken)
if err != nil {
    log.Fatal("Failed to parse claims:", err)
}

Rate Limits

ESI rate limits:

  • 20 requests/second for authenticated requests
  • 10 requests/second for public requests

The client automatically includes required headers like X-Compatibility-Date.

Examples

See examples/ directory:

Development

Code Generation

The client is generated from the ESI OpenAPI specification:

make generate

This downloads the latest ESI spec, generates the client code, and runs post-processing scripts.

Building
go build ./...
go test ./...
go run examples/oauth2_example.go

Library Configuration

User Agent

ESI requires all requests to include a User-Agent header with contact information:

userAgent := "MyEVEApp/1.0 (contact@example.com)"
client := goesi.NewPublicESIClient(userAgent)

Format: AppName/Version (contact-email)

Running Examples

The examples require an ESI application registration:

1. Register Your Application

Visit EVE Developers to create an application and get a Client ID.

2. Set Environment Variables
export ESI_CLIENT_ID="your-client-id-from-developers-portal"
3. Run Examples
go run examples/basic-oauth2/main.go
go run examples/context-auth/main.go

Dependencies

  • golang.org/x/oauth2 - OAuth2 client
  • github.com/golang-jwt/jwt/v5 - JWT token parsing
  • github.com/MicahParks/keyfunc/v3 - JWT key validation

Requirements

  • Go 1.24+
  • Valid ESI application registration

Resources

License

MIT License - see LICENSE file.

Disclaimer

Not affiliated with CCP Games. EVE Online is a trademark of CCP hf.

Documentation

Index

Constants

View Source
const (
	ScopeAccessReadListsV1                       = "esi-access.read_lists.v1"
	ScopeActivitiesReadCharacterV1               = "esi-activities.read_character.v1"
	ScopeAlliancesReadContactsV1                 = "esi-alliances.read_contacts.v1"
	ScopeAssetsReadAssetsV1                      = "esi-assets.read_assets.v1"
	ScopeAssetsReadCorporationAssetsV1           = "esi-assets.read_corporation_assets.v1"
	ScopeCalendarReadCalendarEventsV1            = "esi-calendar.read_calendar_events.v1"
	ScopeCalendarRespondCalendarEventsV1         = "esi-calendar.respond_calendar_events.v1"
	ScopeCharactersReadAgentsResearchV1          = "esi-characters.read_agents_research.v1"
	ScopeCharactersReadBlueprintsV1              = "esi-characters.read_blueprints.v1"
	ScopeCharactersReadContactsV1                = "esi-characters.read_contacts.v1"
	ScopeCharactersReadCorporationRolesV1        = "esi-characters.read_corporation_roles.v1"
	ScopeCharactersReadFatigueV1                 = "esi-characters.read_fatigue.v1"
	ScopeCharactersReadFreelanceJobsV1           = "esi-characters.read_freelance_jobs.v1"
	ScopeCharactersReadFwStatsV1                 = "esi-characters.read_fw_stats.v1"
	ScopeCharactersReadLoyaltyV1                 = "esi-characters.read_loyalty.v1"
	ScopeCharactersReadMedalsV1                  = "esi-characters.read_medals.v1"
	ScopeCharactersReadNotificationsV1           = "esi-characters.read_notifications.v1"
	ScopeCharactersReadStandingsV1               = "esi-characters.read_standings.v1"
	ScopeCharactersReadTitlesV1                  = "esi-characters.read_titles.v1"
	ScopeCharactersWriteContactsV1               = "esi-characters.write_contacts.v1"
	ScopeClonesReadClonesV1                      = "esi-clones.read_clones.v1"
	ScopeClonesReadImplantsV1                    = "esi-clones.read_implants.v1"
	ScopeContractsReadCharacterContractsV1       = "esi-contracts.read_character_contracts.v1"
	ScopeContractsReadCorporationContractsV1     = "esi-contracts.read_corporation_contracts.v1"
	ScopeCorporationsReadBlueprintsV1            = "esi-corporations.read_blueprints.v1"
	ScopeCorporationsReadContactsV1              = "esi-corporations.read_contacts.v1"
	ScopeCorporationsReadContainerLogsV1         = "esi-corporations.read_container_logs.v1"
	ScopeCorporationsReadCorporationMembershipV1 = "esi-corporations.read_corporation_membership.v1"
	ScopeCorporationsReadDivisionsV1             = "esi-corporations.read_divisions.v1"
	ScopeCorporationsReadFacilitiesV1            = "esi-corporations.read_facilities.v1"
	ScopeCorporationsReadFreelanceJobsV1         = "esi-corporations.read_freelance_jobs.v1"
	ScopeCorporationsReadFwStatsV1               = "esi-corporations.read_fw_stats.v1"
	ScopeCorporationsReadMedalsV1                = "esi-corporations.read_medals.v1"
	ScopeCorporationsReadProjectsV1              = "esi-corporations.read_projects.v1"
	ScopeCorporationsReadStandingsV1             = "esi-corporations.read_standings.v1"
	ScopeCorporationsReadStarbasesV1             = "esi-corporations.read_starbases.v1"
	ScopeCorporationsReadStructuresV1            = "esi-corporations.read_structures.v1"
	ScopeCorporationsReadTitlesV1                = "esi-corporations.read_titles.v1"
	ScopeCorporationsTrackMembersV1              = "esi-corporations.track_members.v1"
	ScopeFittingsReadFittingsV1                  = "esi-fittings.read_fittings.v1"
	ScopeFittingsWriteFittingsV1                 = "esi-fittings.write_fittings.v1"
	ScopeFleetsReadFleetV1                       = "esi-fleets.read_fleet.v1"
	ScopeFleetsWriteFleetV1                      = "esi-fleets.write_fleet.v1"
	ScopeIndustryReadCharacterJobsV1             = "esi-industry.read_character_jobs.v1"
	ScopeIndustryReadCharacterMiningV1           = "esi-industry.read_character_mining.v1"
	ScopeIndustryReadCorporationJobsV1           = "esi-industry.read_corporation_jobs.v1"
	ScopeIndustryReadCorporationMiningV1         = "esi-industry.read_corporation_mining.v1"
	ScopeKillmailsReadCorporationKillmailsV1     = "esi-killmails.read_corporation_killmails.v1"
	ScopeKillmailsReadKillmailsV1                = "esi-killmails.read_killmails.v1"
	ScopeLocationReadLocationV1                  = "esi-location.read_location.v1"
	ScopeLocationReadOnlineV1                    = "esi-location.read_online.v1"
	ScopeLocationReadShipTypeV1                  = "esi-location.read_ship_type.v1"
	ScopeMailOrganizeMailV1                      = "esi-mail.organize_mail.v1"
	ScopeMailReadMailV1                          = "esi-mail.read_mail.v1"
	ScopeMailSendMailV1                          = "esi-mail.send_mail.v1"
	ScopeMarketsReadCharacterOrdersV1            = "esi-markets.read_character_orders.v1"
	ScopeMarketsReadCorporationOrdersV1          = "esi-markets.read_corporation_orders.v1"
	ScopeMarketsStructureMarketsV1               = "esi-markets.structure_markets.v1"
	ScopePlanetsManagePlanetsV1                  = "esi-planets.manage_planets.v1"
	ScopePlanetsReadCustomsOfficesV1             = "esi-planets.read_customs_offices.v1"
	ScopeSearchSearchStructuresV1                = "esi-search.search_structures.v1"
	ScopeSkillsReadSkillqueueV1                  = "esi-skills.read_skillqueue.v1"
	ScopeSkillsReadSkillsV1                      = "esi-skills.read_skills.v1"
	ScopeStructuresReadCharacterV1               = "esi-structures.read_character.v1"
	ScopeStructuresReadCorporationV1             = "esi-structures.read_corporation.v1"
	ScopeUiOpenWindowV1                          = "esi-ui.open_window.v1"
	ScopeUiWriteWaypointV1                       = "esi-ui.write_waypoint.v1"
	ScopeUniverseReadStructuresV1                = "esi-universe.read_structures.v1"
	ScopeWalletReadCharacterWalletV1             = "esi-wallet.read_character_wallet.v1"
	ScopeWalletReadCorporationWalletsV1          = "esi-wallet.read_corporation_wallets.v1"
)

Variables

View Source
var (
	ErrInvalidToken = errors.New("invalid or expired token")
	ErrInvalidState = errors.New("invalid OAuth2 state parameter")
	ErrMissingCode  = errors.New("missing authorization code")
	ErrTokenRefresh = errors.New("failed to refresh token")
)
View Source
var (
	// ContextOAuth2 is the context key for GoESI authentication. Pass a tokenSource with this key to a context for an ESI API Call
	ContextOAuth2 = esi.ContextOAuth2
)

Context keys for ESI authentication

Functions

func ESIDefaultKeyfunc

func ESIDefaultKeyfunc(ctx context.Context) (jwt.Keyfunc, error)

ESIDefaultKeyfunc creates a default keyfunc that fetches ESI JWT signing keys from JWKS

func IsExpired

func IsExpired(token *oauth2.Token) bool

IsExpired checks if the token is expired or will expire soon

func NewAuthenticatedESIClient

func NewAuthenticatedESIClient(ctx context.Context, config *Config, token *oauth2.Token, userAgent string) *esi.APIClient

NewAuthenticatedESIClient creates a new ESI API client with OAuth2 authentication

func NewESIClientWithOptions

func NewESIClientWithOptions(httpClient *http.Client, options ClientOptions) *esi.APIClient

NewESIClientWithOptions creates a new ESI API client with custom options

func NewPublicESIClient

func NewPublicESIClient(userAgent string) *esi.APIClient

NewPublicESIClient creates a new ESI API client for public endpoints (no authentication required)

func TokenFromJSON

func TokenFromJSON(jsonStr string) (*oauth2.Token, error)

TokenFromJSON helper function to convert stored JSON to a token.

func TokenToJSON

func TokenToJSON(token *oauth2.Token) (string, error)

TokenToJSON helper function to convert a token to a storable format.

Types

type AcceptedAlly

type AcceptedAlly struct {
	AllyID   int64   `yaml:"allyID"`
	CharID   int64   `yaml:"charID"`
	EnemyID  int64   `yaml:"enemyID"`
	IskValue float64 `yaml:"iskValue"`
	Time     int64   `yaml:"time"`
}

type AcceptedSurrender

type AcceptedSurrender struct {
	CharID     int64   `yaml:"charID"`
	EntityID   int64   `yaml:"entityID"`
	IskValue   float64 `yaml:"iskValue"`
	OfferingID int64   `yaml:"offeringID"`
}

type AllMaintenanceBillMsg

type AllMaintenanceBillMsg struct {
	AllianceID int64 `yaml:"allianceID"`
	DueDate    int64 `yaml:"dueDate"`
}

type AllWarCorpJoinedAllianceMsg

type AllWarCorpJoinedAllianceMsg struct {
	AllianceID int64 `yaml:"allianceID"`
	CorpID     int64 `yaml:"corpID"`
}

type AllWarDeclaredMsg

type AllWarDeclaredMsg struct {
	AgainstID    int64   `yaml:"againstID"`
	Cost         float64 `yaml:"cost"`
	DeclaredByID int64   `yaml:"declaredByID"`
	DelayHours   int32   `yaml:"delayHours"`
	HostileState int32   `yaml:"hostileState"`
}

type AllWarInvalidatedMsg

type AllWarInvalidatedMsg struct {
	AgainstID    int64   `yaml:"againstID"`
	Cost         float64 `yaml:"cost"`
	DeclaredByID int64   `yaml:"declaredByID"`
	DelayHours   int32   `yaml:"delayHours"`
	HostileState int32   `yaml:"hostileState"`
}

type AllWarRetractedMsg

type AllWarRetractedMsg struct {
	AgainstID    int64   `yaml:"againstID"`
	Cost         float64 `yaml:"cost"`
	DeclaredByID int64   `yaml:"declaredByID"`
	DelayHours   int32   `yaml:"delayHours"`
	HostileState int32   `yaml:"hostileState"`
}

type AllWarSurrenderMsg

type AllWarSurrenderMsg struct {
	AgainstID    int64   `yaml:"againstID"`
	Cost         float64 `yaml:"cost"`
	DeclaredByID int64   `yaml:"declaredByID"`
	DelayHours   int32   `yaml:"delayHours"`
	HostileState int32   `yaml:"hostileState"`
}

type AllianceCapitalChanged

type AllianceCapitalChanged struct {
	AllianceID    int64 `yaml:"allianceID"`
	SolarSystemID int64 `yaml:"solarSystemID"`
}

type AllyContractCancelled

type AllyContractCancelled struct {
	AggressorID  int64 `yaml:"aggressorID"`
	DefenderID   int64 `yaml:"defenderID"`
	TimeFinished int64 `yaml:"timeFinished"`
}

type AllyJoinedWarAggressorMsg

type AllyJoinedWarAggressorMsg struct {
	AllyID     int64 `yaml:"allyID"`
	DefenderID int64 `yaml:"defenderID"`
	StartTime  int64 `yaml:"startTime"`
}

type AllyJoinedWarAllyMsg

type AllyJoinedWarAllyMsg struct {
	AggressorID int64 `yaml:"aggressorID"`
	AllyID      int64 `yaml:"allyID"`
	DefenderID  int64 `yaml:"defenderID"`
	StartTime   int64 `yaml:"startTime"`
}

type AllyJoinedWarDefenderMsg

type AllyJoinedWarDefenderMsg struct {
	AggressorID int64 `yaml:"aggressorID"`
	AllyID      int64 `yaml:"allyID"`
	StartTime   int64 `yaml:"startTime"`
}

type BillOutOfMoneyMsg

type BillOutOfMoneyMsg struct {
	BillTypeID int64 `yaml:"billTypeID"`
	DueDate    int64 `yaml:"dueDate"`
}

type BillPaidCorpAllMsg

type BillPaidCorpAllMsg struct {
	Amount  int32 `yaml:"amount"`
	DueDate int64 `yaml:"dueDate"`
}

type BountyClaimMsg

type BountyClaimMsg struct {
	Amount float64 `yaml:"amount"`
	CharID int64   `yaml:"charID"`
}

type BountyESSShared

type BountyESSShared struct {
	CharID   int64   `yaml:"charID"`
	MyIsk    float64 `yaml:"myIsk"`
	TotalIsk float64 `yaml:"totalIsk"`
}

type BountyESSTaken

type BountyESSTaken struct {
	CharID   int64   `yaml:"charID"`
	MyIsk    float64 `yaml:"myIsk"`
	TotalIsk float64 `yaml:"totalIsk"`
}

type BountyPlacedAlliance

type BountyPlacedAlliance struct {
	Bounty         float64 `yaml:"bounty"`
	BountyPlacerID int64   `yaml:"bountyPlacerID"`
}

type BountyPlacedChar

type BountyPlacedChar struct {
	Bounty         float64 `yaml:"bounty"`
	BountyPlacerID int64   `yaml:"bountyPlacerID"`
}

type BountyPlacedCorp

type BountyPlacedCorp struct {
	Bounty         float64 `yaml:"bounty"`
	BountyPlacerID int64   `yaml:"bountyPlacerID"`
}

type BountyYourBountyClaimed

type BountyYourBountyClaimed struct {
	Bounty   float64 `yaml:"bounty"`
	VictimID int64   `yaml:"victimID"`
}

type BuddyConnectContactAdd

type BuddyConnectContactAdd struct {
	Level   int32  `yaml:"level"`
	Message string `yaml:"message"`
}

type CharAppAcceptMsg

type CharAppAcceptMsg struct {
	ApplicationText string `yaml:"applicationText"`
	CharID          int64  `yaml:"charID"`
	CorpID          int64  `yaml:"corpID"`
}

type CharAppRejectMsg

type CharAppRejectMsg struct {
	ApplicationText string `yaml:"applicationText"`
	CharID          int64  `yaml:"charID"`
	CorpID          int64  `yaml:"corpID"`
}

type CharAppWithdrawMsg

type CharAppWithdrawMsg struct {
	ApplicationText string `yaml:"applicationText"`
	CharID          int64  `yaml:"charID"`
	CorpID          int64  `yaml:"corpID"`
}

type CharLeftCorpMsg

type CharLeftCorpMsg struct {
	CharID int64 `yaml:"charID"`
	CorpID int64 `yaml:"corpID"`
}

type CharMedalMsg

type CharMedalMsg struct {
	CorpID  int64  `yaml:"corpID"`
	MedalID int64  `yaml:"medalID"`
	Reason  string `yaml:"reason"`
}

type CharTerminationMsg

type CharTerminationMsg struct {
	CharID      int64   `yaml:"charID"`
	CorpID      int64   `yaml:"corpID"`
	RoleName    string  `yaml:"roleName"`
	RoleNameIDs []int64 `yaml:"roleNameIDs"`
	Security    float64 `yaml:"security"`
}

type ClientOptions

type ClientOptions struct {
	UserAgent         string
	CompatibilityDate string
	BaseURL           string
}

ClientOptions holds configuration options for ESI client creation

type CloneActivationMsg

type CloneActivationMsg struct {
	CloneBought     int32 `yaml:"cloneBought"`
	CloneStationID  int64 `yaml:"cloneStationID"`
	CloneTypeID     int64 `yaml:"cloneTypeID"`
	CorpStationID   int64 `yaml:"corpStationID"`
	LastCloned      int64 `yaml:"lastCloned"`
	PodKillerID     int64 `yaml:"podKillerID"`
	SkillID         int64 `yaml:"skillID"`
	SkillPointsLost int32 `yaml:"skillPointsLost"`
}

type CloneActivationMsg2

type CloneActivationMsg2 struct {
	CloneStationID int64 `yaml:"cloneStationID"`
	CorpStationID  int64 `yaml:"corpStationID"`
	LastCloned     int64 `yaml:"lastCloned"`
	PodKillerID    int64 `yaml:"podKillerID"`
}

type CloneMovedMsg

type CloneMovedMsg struct {
	CharsInCorpID int64 `yaml:"charsInCorpID"`
	CorpID        int64 `yaml:"corpID"`
	NewStationID  int64 `yaml:"newStationID"`
	StationID     int64 `yaml:"stationID"`
}

type CloneRevokedMsg2

type CloneRevokedMsg2 struct {
	CorpID       int64 `yaml:"corpID"`
	NewStationID int64 `yaml:"newStationID"`
	StationID    int64 `yaml:"stationID"`
}

type Config

type Config struct {
	ClientID    string
	RedirectURL string

	JWTKeyFunc jwt.Keyfunc
	// contains filtered or unexported fields
}

Config holds the OAuth2 configuration for ESI authentication

func NewConfig

func NewConfig(clientID, redirectURL string, keyFunc *jwt.Keyfunc) (*Config, error)

NewConfig creates a new ESI OAuth2 configuration

func (*Config) AuthURL

func (c *Config) AuthURL(state string, scopes []string) string

AuthURL generates the OAuth2 authorization URL with PKCE

func (*Config) Client

func (c *Config) Client(ctx context.Context, token *oauth2.Token) *http.Client

Client returns an HTTP client that automatically includes authentication

func (*Config) Exchange

func (c *Config) Exchange(ctx context.Context, code, state string, expectedState string) (*oauth2.Token, *ESIJWTClaims, error)

Exchange exchanges the authorization code for an access token and parses JWT claims

func (*Config) ParseClaims

func (c *Config) ParseClaims(token *oauth2.Token) (*ESIJWTClaims, error)

ParseClaims extracts and validates claims from an oauth2.Token's access token

func (*Config) RefreshToken

func (c *Config) RefreshToken(ctx context.Context, token *oauth2.Token) (*oauth2.Token, *ESIJWTClaims, error)

RefreshToken refreshes an expired access token and parses the new JWT claims

func (*Config) TokenSource

func (c *Config) TokenSource(ctx context.Context, token *oauth2.Token) oauth2.TokenSource

TokenSource returns a TokenSource that automatically refreshes the token as needed

type ContactAdd

type ContactAdd struct {
	Level   int32  `yaml:"level"`
	Message string `yaml:"message"`
}

type ContactEdit

type ContactEdit struct {
	Level   float64 `yaml:"level"`
	Message string  `yaml:"message"`
}

type ContainerPasswordMsg

type ContainerPasswordMsg struct {
	CharID        int64  `yaml:"charID"`
	Password      string `yaml:"password"`
	PasswordType  string `yaml:"passwordType"`
	SolarSystemID int64  `yaml:"solarSystemID"`
	StationID     int64  `yaml:"stationID"`
	TypeID        int64  `yaml:"typeID"`
}

type CorpAllBillMsg

type CorpAllBillMsg struct {
	Amount      float64 `yaml:"amount"`
	BillTypeID  int64   `yaml:"billTypeID"`
	CreditorID  int64   `yaml:"creditorID"`
	CurrentDate int64   `yaml:"currentDate"`
	DebtorID    int64   `yaml:"debtorID"`
	DueDate     int64   `yaml:"dueDate"`
	ExternalID  int64   `yaml:"externalID"`
	ExternalID2 int64   `yaml:"externalID2"`
}

type CorpAllBillMsgV2

type CorpAllBillMsgV2 struct {
	Amount      float64 `yaml:"amount"`
	BillTypeID  int64   `yaml:"billTypeID"`
	CreditorID  int64   `yaml:"creditorID"`
	CurrentDate int64   `yaml:"currentDate"`
	DebtorID    int64   `yaml:"debtorID"`
	DueDate     int64   `yaml:"dueDate"`
	ExternalID  int64   `yaml:"externalID"`
	ExternalID2 int64   `yaml:"externalID2"`
}

CorpAllBillMsgV2 represents the updated version for this notification type. Use CorpAllBillMsg to unmarshal older notifications.

type CorpAppAcceptMsg

type CorpAppAcceptMsg struct {
	ApplicationText string `yaml:"applicationText"`
	CharID          int64  `yaml:"charID"`
	CorpID          int64  `yaml:"corpID"`
}

type CorpAppInvitedMsg

type CorpAppInvitedMsg struct {
	ApplicationText string `yaml:"applicationText"`
	CharID          int64  `yaml:"charID"`
	CorpID          int64  `yaml:"corpID"`
	InvokingCharID  int64  `yaml:"invokingCharID"`
}

type CorpAppNewMsg

type CorpAppNewMsg struct {
	ApplicationText string `yaml:"applicationText"`
	CharID          int64  `yaml:"charID"`
	CorpID          int64  `yaml:"corpID"`
}

type CorpAppRejectCustomMsg

type CorpAppRejectCustomMsg struct {
	ApplicationText string `yaml:"applicationText"`
	CharID          int64  `yaml:"charID"`
	CorpID          int64  `yaml:"corpID"`
	CustomMessage   string `yaml:"customMessage"`
}

type CorpAppRejectMsg

type CorpAppRejectMsg struct {
	ApplicationText string `yaml:"applicationText"`
	CharID          int64  `yaml:"charID"`
	CorpID          int64  `yaml:"corpID"`
}

type CorpDividendMsg

type CorpDividendMsg struct {
	Amount    float64 `yaml:"amount"`
	CorpID    int64   `yaml:"corpID"`
	IsMembers bool    `yaml:"isMembers"`
	Payout    float64 `yaml:"payout"`
}

type CorpFriendlyFireDisableTimerCompleted

type CorpFriendlyFireDisableTimerCompleted struct {
	CorpID int64 `yaml:"corpID"`
}

type CorpFriendlyFireDisableTimerStarted

type CorpFriendlyFireDisableTimerStarted struct {
	CharID       int64 `yaml:"charID"`
	CorpID       int64 `yaml:"corpID"`
	TimeFinished int64 `yaml:"timeFinished"`
}

type CorpFriendlyFireEnableTimerCompleted

type CorpFriendlyFireEnableTimerCompleted struct {
	CorpID int64 `yaml:"corpID"`
}

type CorpFriendlyFireEnableTimerStarted

type CorpFriendlyFireEnableTimerStarted struct {
	CharID       int64 `yaml:"charID"`
	CorpID       int64 `yaml:"corpID"`
	TimeFinished int64 `yaml:"timeFinished"`
}

type CorpKicked

type CorpKicked struct {
	CorpID int64 `yaml:"corpID"`
}

type CorpLiquidationMsg

type CorpLiquidationMsg struct {
	Amount float64 `yaml:"amount"`
	CorpID int64   `yaml:"corpID"`
	Payout float64 `yaml:"payout"`
}

type CorpNewCEOMsg

type CorpNewCEOMsg struct {
	CorpID   int64 `yaml:"corpID"`
	NewCeoID int64 `yaml:"newCeoID"`
	OldCeoID int64 `yaml:"oldCeoID"`
}

type CorpNewsMsg

type CorpNewsMsg struct {
	Body      string `yaml:"body"`
	CorpID    int64  `yaml:"corpID"`
	InEffect  int32  `yaml:"inEffect"`
	Parameter int32  `yaml:"parameter"`
	VoteType  int32  `yaml:"voteType"`
}

type CorpTaxChangeMsg

type CorpTaxChangeMsg struct {
	CorpID     int64   `yaml:"corpID"`
	NewTaxRate float64 `yaml:"newTaxRate"`
	OldTaxRate float64 `yaml:"oldTaxRate"`
}

type CorpVoteMsg

type CorpVoteMsg struct {
	Body    string `yaml:"body"`
	Subject string `yaml:"subject"`
}

type CorpWarDeclaredMsg

type CorpWarDeclaredMsg struct {
	AgainstID    int64   `yaml:"againstID"`
	Cost         float64 `yaml:"cost"`
	DeclaredByID int64   `yaml:"declaredByID"`
}

type CorpWarFightingLegalMsg

type CorpWarFightingLegalMsg struct {
	AgainstID    int64   `yaml:"againstID"`
	Cost         float64 `yaml:"cost"`
	DeclaredByID int64   `yaml:"declaredByID"`
}

type CorpWarInvalidatedMsg

type CorpWarInvalidatedMsg struct {
	AgainstID    int64   `yaml:"againstID"`
	Cost         float64 `yaml:"cost"`
	DeclaredByID int64   `yaml:"declaredByID"`
}

type CorpWarRetractedMsg

type CorpWarRetractedMsg struct {
	AgainstID    int64   `yaml:"againstID"`
	Cost         float64 `yaml:"cost"`
	DeclaredByID int64   `yaml:"declaredByID"`
}

type CorpWarSurrenderMsg

type CorpWarSurrenderMsg struct {
	AgainstID    int64   `yaml:"againstID"`
	Cost         float64 `yaml:"cost"`
	DeclaredByID int64   `yaml:"declaredByID"`
}

type CustomsMsg

type CustomsMsg struct {
	FactionID int64 `yaml:"factionID"`
	LostList  []struct {
		Fine     float64 `yaml:"fine"`
		Penalty  float64 `yaml:"penalty"`
		Quantity int32   `yaml:"quantity"`
		TypeID   int64   `yaml:"typeID"`
	} `yaml:"lostList"`
	SecurityLevel    float64 `yaml:"securityLevel"`
	ShouldAttack     int32   `yaml:"shouldAttack"`
	ShouldConfiscate int32   `yaml:"shouldConfiscate"`
	SolarSystemID    int64   `yaml:"solarSystemID"`
	StandingDivision float64 `yaml:"standingDivision"`
}

type DeclareWar

type DeclareWar struct {
	CharID     int64 `yaml:"charID"`
	DefenderID int64 `yaml:"defenderID"`
	EntityID   int64 `yaml:"entityID"`
}

type ESIJWTClaims

type ESIJWTClaims struct {
	jwt.RegisteredClaims

	// ESI-specific claims
	Scopes StringOrArray `json:"scp"`
	Name   string        `json:"name"`
	Owner  string        `json:"owner"`
	Kid    string        `json:"kid"`
	Azp    string        `json:"azp"`
	Tenant string        `json:"tenant"`
	Tier   string        `json:"tier"`
	Region string        `json:"region"`
}

ESIJWTClaims represents the claims in an ESI JWT token with embedded standard claims

func (*ESIJWTClaims) CharacterID

func (claims *ESIJWTClaims) CharacterID() (int64, error)

CharacterID extracts the character ID from the JWT subject

type EntosisCaptureStarted

type EntosisCaptureStarted struct {
	SolarSystemID   int64 `yaml:"solarSystemID"`
	StructureTypeID int64 `yaml:"structureTypeID"`
}

type FWAllianceWarningMsg

type FWAllianceWarningMsg struct {
	AllianceID       int64   `yaml:"allianceID"`
	CorpList         string  `yaml:"corpList"`
	FactionID        int64   `yaml:"factionID"`
	RequiredStanding float64 `yaml:"requiredStanding"`
}

type FWCharRankGainMsg

type FWCharRankGainMsg struct {
	FactionID int64 `yaml:"factionID"`
	NewRank   int32 `yaml:"newRank"`
}

type FWCharRankLossMsg

type FWCharRankLossMsg struct {
	FactionID int64 `yaml:"factionID"`
	NewRank   int32 `yaml:"newRank"`
}

type FWCorpJoinMsg

type FWCorpJoinMsg struct {
	CorpID    int64 `yaml:"corpID"`
	FactionID int64 `yaml:"factionID"`
}

type FWCorpKickMsg

type FWCorpKickMsg struct {
	CorpID           int64   `yaml:"corpID"`
	CurrentStanding  float64 `yaml:"currentStanding"`
	FactionID        int64   `yaml:"factionID"`
	RequiredStanding float64 `yaml:"requiredStanding"`
}

type FWCorpLeaveMsg

type FWCorpLeaveMsg struct {
	CorpID    int64 `yaml:"corpID"`
	FactionID int64 `yaml:"factionID"`
}

type FWCorpWarningMsg

type FWCorpWarningMsg struct {
	CorpID           int64   `yaml:"corpID"`
	CurrentStanding  float64 `yaml:"currentStanding"`
	FactionID        int64   `yaml:"factionID"`
	RequiredStanding float64 `yaml:"requiredStanding"`
}

type FacWarCorpJoinRequestMsg

type FacWarCorpJoinRequestMsg struct {
	CorpID    int64 `yaml:"corpID"`
	FactionID int64 `yaml:"factionID"`
}

type FacWarCorpJoinWithdrawMsg

type FacWarCorpJoinWithdrawMsg struct {
	CorpID    int64 `yaml:"corpID"`
	FactionID int64 `yaml:"factionID"`
}

type FacWarCorpLeaveRequestMsg

type FacWarCorpLeaveRequestMsg struct {
	CorpID    int64 `yaml:"corpID"`
	FactionID int64 `yaml:"factionID"`
}

type FacWarCorpLeaveWithdrawMsg

type FacWarCorpLeaveWithdrawMsg struct {
	CorpID    int64 `yaml:"corpID"`
	FactionID int64 `yaml:"factionID"`
}

type FacWarLPDisqualifiedEvent

type FacWarLPDisqualifiedEvent struct {
	Amount               int32 `yaml:"amount"`
	CharRefID            int64 `yaml:"charRefID"`
	CorpID               int64 `yaml:"corpID"`
	DisqualificationType int32 `yaml:"disqualificationType"`
	Event                int32 `yaml:"event"`
	ItemRefID            int64 `yaml:"itemRefID"`
	LocationID           int64 `yaml:"locationID"`
}

type FacWarLPDisqualifiedKill

type FacWarLPDisqualifiedKill struct {
	Amount               int32 `yaml:"amount"`
	CharRefID            int64 `yaml:"charRefID"`
	CorpID               int64 `yaml:"corpID"`
	DisqualificationType int32 `yaml:"disqualificationType"`
	Event                int32 `yaml:"event"`
	ItemRefID            int64 `yaml:"itemRefID"`
	LocationID           int64 `yaml:"locationID"`
}

type FacWarLPPayoutEvent

type FacWarLPPayoutEvent struct {
	Amount     int32 `yaml:"amount"`
	CharRefID  int64 `yaml:"charRefID"`
	CorpID     int64 `yaml:"corpID"`
	Event      int32 `yaml:"event"`
	ItemRefID  int64 `yaml:"itemRefID"`
	LocationID int64 `yaml:"locationID"`
}

type FacWarLPPayoutKill

type FacWarLPPayoutKill struct {
	Amount     int32 `yaml:"amount"`
	CharRefID  int64 `yaml:"charRefID"`
	CorpID     int64 `yaml:"corpID"`
	Event      int32 `yaml:"event"`
	ItemRefID  int64 `yaml:"itemRefID"`
	LocationID int64 `yaml:"locationID"`
}

type GameTimeAdded

type GameTimeAdded struct {
}

type GameTimeReceived

type GameTimeReceived struct {
	Message      string `yaml:"message"`
	OfferID      int64  `yaml:"offerID"`
	Quantity     int32  `yaml:"quantity"`
	SenderCharID int64  `yaml:"senderCharID"`
}

type GameTimeSent

type GameTimeSent struct {
	ReceiverCharID int64 `yaml:"receiverCharID"`
	SenderCharID   int64 `yaml:"senderCharID"`
}

type GiftReceived

type GiftReceived struct {
	Message      string `yaml:"message"`
	OfferID      int64  `yaml:"offerID"`
	Quantity     int32  `yaml:"quantity"`
	SenderCharID int64  `yaml:"senderCharID"`
}

type IHubDestroyedByBillFailure

type IHubDestroyedByBillFailure struct {
	SolarSystemID   int64 `yaml:"solarSystemID"`
	StructureTypeID int64 `yaml:"structureTypeID"`
}

type IncursionCompletedMsg

type IncursionCompletedMsg struct {
	EmailMessageID float64   `yaml:"emailMessageId"`
	SolarSystemID  int64     `yaml:"solarSystemID"`
	TaleID         int64     `yaml:"taleID"`
	TopTen         [][]int64 `yaml:"topTen"`
}

type IndustryTeamAuctionLost

type IndustryTeamAuctionLost struct {
	SolarSystemID int64             `yaml:"solarSystemID"`
	SystemBids    map[int64]float64 `yaml:"systemBids"`
	TeamNameInfo  []interface{}     `yaml:"teamNameInfo"`
	TotalIsk      float64           `yaml:"totalIsk"`
	YourAmount    float64           `yaml:"yourAmount"`
}

type InfrastructureHubBillAboutToExpire

type InfrastructureHubBillAboutToExpire struct {
	BillID        int64 `yaml:"billID"`
	CorpID        int64 `yaml:"corpID"`
	DueDate       int64 `yaml:"dueDate"`
	SolarSystemID int64 `yaml:"solarSystemID"`
}

type InsuranceExpirationMsg

type InsuranceExpirationMsg struct {
	EndDate   int64  `yaml:"endDate"`
	ShipID    int64  `yaml:"shipID"`
	ShipName  string `yaml:"shipName"`
	StartDate int64  `yaml:"startDate"`
}

type InsuranceFirstShipMsg

type InsuranceFirstShipMsg struct {
	IsHouseWarmingGift int32 `yaml:"isHouseWarmingGift"`
	ShipTypeID         int64 `yaml:"shipTypeID"`
}

type InsuranceInvalidatedMsg

type InsuranceInvalidatedMsg struct {
	EndDate   int64 `yaml:"endDate"`
	OwnerID   int64 `yaml:"ownerID"`
	Reason    int32 `yaml:"reason"`
	ShipID    int64 `yaml:"shipID"`
	StartDate int64 `yaml:"startDate"`
	TypeID    int64 `yaml:"typeID"`
}

type InsuranceIssuedMsg

type InsuranceIssuedMsg struct {
	EndDate   int64   `yaml:"endDate"`
	ItemID    int64   `yaml:"itemID"`
	Level     float64 `yaml:"level"`
	NumWeeks  int32   `yaml:"numWeeks"`
	ShipName  string  `yaml:"shipName"`
	StartDate int64   `yaml:"startDate"`
	TypeID    int64   `yaml:"typeID"`
}

type InsurancePayoutMsg

type InsurancePayoutMsg struct {
	Amount float64 `yaml:"amount"`
	ItemID int64   `yaml:"itemID"`
	Payout int32   `yaml:"payout"`
}

type JumpCloneDeletedMsg1

type JumpCloneDeletedMsg1 struct {
	LocationID      int64   `yaml:"locationID"`
	LocationOwnerID int64   `yaml:"locationOwnerID"`
	OwnerID         int64   `yaml:"ownerID"`
	TypeIDs         []int64 `yaml:"typeIDs"`
}

type JumpCloneDeletedMsg2

type JumpCloneDeletedMsg2 struct {
	DestroyerID     int64   `yaml:"destroyerID"`
	LocationID      int64   `yaml:"locationID"`
	LocationOwnerID int64   `yaml:"locationOwnerID"`
	OwnerID         int64   `yaml:"ownerID"`
	TypeIDs         []int64 `yaml:"typeIDs"`
}

type KillReportFinalBlow

type KillReportFinalBlow struct {
	KillMailHash     string `yaml:"killMailHash"`
	KillMailID       int64  `yaml:"killMailID"`
	VictimID         int64  `yaml:"victimID"`
	VictimShipTypeID int64  `yaml:"victimShipTypeID"`
}

type KillReportVictim

type KillReportVictim struct {
	KillMailHash     string `yaml:"killMailHash"`
	KillMailID       int64  `yaml:"killMailID"`
	VictimShipTypeID int64  `yaml:"victimShipTypeID"`
}

type KillRightAvailable

type KillRightAvailable struct {
	CharID     int64   `yaml:"charID"`
	Price      float64 `yaml:"price"`
	ToEntityID int64   `yaml:"toEntityID"`
}

type KillRightAvailableOpen

type KillRightAvailableOpen struct {
	CharID int64   `yaml:"charID"`
	Price  float64 `yaml:"price"`
}

type KillRightEarned

type KillRightEarned struct {
	CharID int64 `yaml:"charID"`
}

type KillRightUnavailable

type KillRightUnavailable struct {
	CharID     int64 `yaml:"charID"`
	ToEntityID int64 `yaml:"toEntityID"`
}

type KillRightUnavailableOpen

type KillRightUnavailableOpen struct {
	CharID int64 `yaml:"charID"`
}

type KillRightUsed

type KillRightUsed struct {
	CharID int64 `yaml:"charID"`
}

type LocateCharMsg

type LocateCharMsg struct {
	AgentLocation struct {
		Region        int64 `yaml:"3"`
		Constellation int64 `yaml:"4"`
		SolarSystem   int64 `yaml:"5"`
		Station       int64 `yaml:"15"`
	} `yaml:"agentLocation"`
	CharacterID    int64 `yaml:"characterID"`
	MessageIndex   int32 `yaml:"messageIndex"`
	TargetLocation struct {
		Region        int64 `yaml:"3"`
		Constellation int64 `yaml:"4"`
		SolarSystem   int64 `yaml:"5"`
		Station       int64 `yaml:"15"`
	} `yaml:"targetLocation"`
}

type MadeWarMutual

type MadeWarMutual struct {
	CharID  int64 `yaml:"charID"`
	EnemyID int64 `yaml:"enemyID"`
}

type MercOfferedNegotiationMsg

type MercOfferedNegotiationMsg struct {
	AggressorID int64   `yaml:"aggressorID"`
	DefenderID  int64   `yaml:"defenderID"`
	IskValue    float64 `yaml:"iskValue"`
	MercID      int64   `yaml:"mercID"`
}

type MercenaryDenAttacked added in v0.0.24

type MercenaryDenAttacked struct {
	AggressorAllianceName    string  `yaml:"aggressorAllianceName"`
	AggressorCharacterID     int64   `yaml:"aggressorCharacterID"`
	AggressorCorporationName string  `yaml:"aggressorCorporationName"`
	ArmorPercentage          float64 `yaml:"armorPercentage"`
	HullPercentage           float64 `yaml:"hullPercentage"`
	ItemID                   int64   `yaml:"itemID"`
	MercenaryDenShowInfoData []any   `yaml:"mercenaryDenShowInfoData"`
	PlanetID                 int64   `yaml:"planetID"`
	PlanetShowInfoData       []any   `yaml:"planetShowInfoData"`
	ShieldPercentage         float64 `yaml:"shieldPercentage"`
	SolarSystemID            int64   `yaml:"solarsystemID"`
	TypeID                   int64   `yaml:"typeID"`
}

type MercenaryDenReinforced added in v0.0.24

type MercenaryDenReinforced struct {
	AggressorAllianceName    string `yaml:"aggressorAllianceName"`
	AggressorCharacterID     int64  `yaml:"aggressorCharacterID"`
	AggressorCorporationName string `yaml:"aggressorCorporationName"`
	ItemID                   int64  `yaml:"itemID"`
	MercenaryDenShowInfoData []any  `yaml:"mercenaryDenShowInfoData"`
	PlanetID                 int64  `yaml:"planetID"`
	PlanetShowInfoData       []any  `yaml:"planetShowInfoData"`
	SolarSystemID            int64  `yaml:"solarsystemID"`
	TimestampEntered         int64  `yaml:"timestampEntered"`
	TimestampExited          int64  `yaml:"timestampExited"`
	TypeID                   int64  `yaml:"typeID"`
}

type MissionOfferExpirationMsg

type MissionOfferExpirationMsg struct {
	Body            []string `yaml:"body"`
	Header          []string `yaml:"header"`
	MissionKeywords struct {
		ObjectiveDestinationID       int64 `yaml:"objectiveDestinationID"`
		ObjectiveDestinationSystemID int64 `yaml:"objectiveDestinationSystemID"`
		ObjectiveLocationID          int64 `yaml:"objectiveLocationID"`
		ObjectiveLocationSystemID    int64 `yaml:"objectiveLocationSystemID"`
		ObjectiveQuantity            int32 `yaml:"objectiveQuantity"`
		ObjectiveTypeID              int64 `yaml:"objectiveTypeID"`
		RewardQuantity               int32 `yaml:"rewardQuantity"`
		RewardTypeID                 int64 `yaml:"rewardTypeID"`
	} `yaml:"missionKeywords"`
}

type MoonminingAutomaticFracture

type MoonminingAutomaticFracture struct {
	MoonID          int64             `yaml:"moonID"`
	MoonLink        string            `yaml:"moonLink"`
	OreVolumeByType map[int64]float64 `yaml:"oreVolumeByType"`
	SolarSystemID   int64             `yaml:"solarSystemID"`
	SolarSystemLink string            `yaml:"solarSystemLink"`
	StructureID     int64             `yaml:"structureID"`
	StructureLink   string            `yaml:"structureLink"`
	StructureName   string            `yaml:"structureName"`
	StructureTypeID int64             `yaml:"structureTypeID"`
}

type MoonminingExtractionCancelled

type MoonminingExtractionCancelled struct {
	CancelledBy     int64  `yaml:"cancelledBy"`
	CancelledByLink string `yaml:"cancelledByLink"`
	MoonID          int64  `yaml:"moonID"`
	MoonLink        string `yaml:"moonLink"`
	SolarSystemID   int64  `yaml:"solarSystemID"`
	SolarSystemLink string `yaml:"solarSystemLink"`
	StructureID     int64  `yaml:"structureID"`
	StructureLink   string `yaml:"structureLink"`
	StructureName   string `yaml:"structureName"`
	StructureTypeID int64  `yaml:"structureTypeID"`
}

type MoonminingExtractionFinished

type MoonminingExtractionFinished struct {
	AutoTime        int64             `yaml:"autoTime"`
	MoonID          int64             `yaml:"moonID"`
	MoonLink        string            `yaml:"moonLink"`
	OreVolumeByType map[int64]float64 `yaml:"oreVolumeByType"`
	SolarSystemID   int64             `yaml:"solarSystemID"`
	SolarSystemLink string            `yaml:"solarSystemLink"`
	StructureID     int64             `yaml:"structureID"`
	StructureLink   string            `yaml:"structureLink"`
	StructureName   string            `yaml:"structureName"`
	StructureTypeID int64             `yaml:"structureTypeID"`
}

type MoonminingExtractionStarted

type MoonminingExtractionStarted struct {
	AutoTime        int64             `yaml:"autoTime"`
	MoonID          int64             `yaml:"moonID"`
	MoonLink        string            `yaml:"moonLink"`
	OreVolumeByType map[int64]float64 `yaml:"oreVolumeByType"`
	ReadyTime       int64             `yaml:"readyTime"`
	SolarSystemID   int64             `yaml:"solarSystemID"`
	SolarSystemLink string            `yaml:"solarSystemLink"`
	StartedBy       int64             `yaml:"startedBy"`
	StartedByLink   string            `yaml:"startedByLink"`
	StructureID     int64             `yaml:"structureID"`
	StructureLink   string            `yaml:"structureLink"`
	StructureName   string            `yaml:"structureName"`
	StructureTypeID int64             `yaml:"structureTypeID"`
}

type MoonminingLaserFired

type MoonminingLaserFired struct {
	FiredBy         int64             `yaml:"firedBy"`
	FiredByLink     string            `yaml:"firedByLink"`
	MoonID          int64             `yaml:"moonID"`
	MoonLink        string            `yaml:"moonLink"`
	OreVolumeByType map[int64]float64 `yaml:"oreVolumeByType"`
	SolarSystemID   int64             `yaml:"solarSystemID"`
	SolarSystemLink string            `yaml:"solarSystemLink"`
	StructureID     int64             `yaml:"structureID"`
	StructureLink   string            `yaml:"structureLink"`
	StructureName   string            `yaml:"structureName"`
	StructureTypeID int64             `yaml:"structureTypeID"`
}

type NPCStandingsGained

type NPCStandingsGained [][]float64

type NPCStandingsLost

type NPCStandingsLost [][]float64

type NotificationTypeMoonminingExtractionStarted deprecated

type NotificationTypeMoonminingExtractionStarted struct {
	AutoTime        int64             `yaml:"autoTime"`
	MoonID          int64             `yaml:"moonID"`
	MoonLink        string            `yaml:"moonLink"`
	OreVolumeByType map[int64]float64 `yaml:"oreVolumeByType"`
	ReadyTime       int64             `yaml:"readyTime"`
	SolarSystemID   int64             `yaml:"solarSystemID"`
	SolarSystemLink string            `yaml:"solarSystemLink"`
	StartedBy       int64             `yaml:"startedBy"`
	StartedByLink   string            `yaml:"startedByLink"`
	StructureID     int64             `yaml:"structureID"`
	StructureLink   string            `yaml:"structureLink"`
	StructureName   string            `yaml:"structureName"`
	StructureTypeID int64             `yaml:"structureTypeID"`
}

Deprecated: Use MoonminingExtractionStarted instead.

type OfferedSurrender

type OfferedSurrender struct {
	CharID    int64   `yaml:"charID"`
	EntityID  int64   `yaml:"entityID"`
	IskValue  float64 `yaml:"iskValue"`
	OfferedID int64   `yaml:"offeredID"`
}

type OfferedToAlly

type OfferedToAlly struct {
	CharID     int64   `yaml:"charID"`
	DefenderID int64   `yaml:"defenderID"`
	EnemyID    int64   `yaml:"enemyID"`
	IskValue   float64 `yaml:"iskValue"`
}

type OldLscMessages

type OldLscMessages struct {
	Subject string `yaml:"subject"`
	Body    string `yaml:"body"`
}

type OperationFinished

type OperationFinished struct {
	OperationID int64 `yaml:"operationID"`
	Rewards     struct {
		Isk int32 `yaml:"isk"`
	} `yaml:"rewards"`
}

type OrbitalAttacked

type OrbitalAttacked struct {
	AggressorAllianceID int64   `yaml:"aggressorAllianceID"`
	AggressorCorpID     int64   `yaml:"aggressorCorpID"`
	AggressorID         int64   `yaml:"aggressorID"`
	PlanetID            int64   `yaml:"planetID"`
	PlanetTypeID        int64   `yaml:"planetTypeID"`
	ShieldLevel         float64 `yaml:"shieldLevel"`
	SolarSystemID       int64   `yaml:"solarSystemID"`
	TypeID              int64   `yaml:"typeID"`
}

type OrbitalReinforced

type OrbitalReinforced struct {
	AggressorAllianceID int64 `yaml:"aggressorAllianceID"`
	AggressorCorpID     int64 `yaml:"aggressorCorpID"`
	AggressorID         int64 `yaml:"aggressorID"`
	PlanetID            int64 `yaml:"planetID"`
	PlanetTypeID        int64 `yaml:"planetTypeID"`
	ReinforceExitTime   int64 `yaml:"reinforceExitTime"`
	SolarSystemID       int64 `yaml:"solarSystemID"`
	TypeID              int64 `yaml:"typeID"`
}

type OwnershipTransferred

type OwnershipTransferred struct {
	CharacterLinkData       []interface{} `yaml:"characterLinkData"`
	CharacterName           string        `yaml:"characterName"`
	FromCorporationLinkData []interface{} `yaml:"fromCorporationLinkData"`
	FromCorporationName     string        `yaml:"fromCorporationName"`
	SolarSystemLinkData     []interface{} `yaml:"solarSystemLinkData"`
	SolarSystemName         string        `yaml:"solarSystemName"`
	StructureLinkData       []interface{} `yaml:"structureLinkData"`
	StructureName           string        `yaml:"structureName"`
	ToCorporationLinkData   []interface{} `yaml:"toCorporationLinkData"`
	ToCorporationName       string        `yaml:"toCorporationName"`
}

type OwnershipTransferredV2

type OwnershipTransferredV2 struct {
	CharID          int64  `yaml:"charID"`
	NewOwnerCorpID  int64  `yaml:"newOwnerCorpID"`
	OldOwnerCorpID  int64  `yaml:"oldOwnerCorpID"`
	SolarSystemID   int64  `yaml:"solarSystemID"`
	StructureID     int64  `yaml:"structureID"`
	StructureName   string `yaml:"structureName"`
	StructureTypeID int64  `yaml:"structureTypeID"`
}

OwnershipTransferredV2 represents the updated version for this notification type. Use OwnershipTransferred to unmarshal older notifications.

type ReimbursementMsg

type ReimbursementMsg struct {
	AddCloneInfo  int32 `yaml:"addCloneInfo"`
	ShipTypeID    int64 `yaml:"shipTypeID"`
	SolarSystemID int64 `yaml:"solarSystemID"`
	StationID     int64 `yaml:"stationID"`
}

type ResearchMissionAvailableMsg

type ResearchMissionAvailableMsg struct {
}

type RetractsWar

type RetractsWar struct {
	CharID  int64 `yaml:"charID"`
	EnemyID int64 `yaml:"enemyID"`
}

type SeasonalChallengeCompleted

type SeasonalChallengeCompleted struct {
	ChallengeNameID int64 `yaml:"challenge_name_id"`
	MaxProgress     int32 `yaml:"max_progress"`
	PointsAwarded   int32 `yaml:"points_awarded"`
	ProgressText    int32 `yaml:"progress_text"`
}

type SkyhookLostShields

type SkyhookLostShields struct {
	ItemID              int64         `yaml:"itemID"`
	PlanetID            int64         `yaml:"planetID"`
	PlanetShowInfoData  []interface{} `yaml:"planetShowInfoData"`
	SkyhookShowInfoData []interface{} `yaml:"skyhookShowInfoData"`
	SolarsystemID       int64         `yaml:"solarsystemID"`
	TimeLeft            int64         `yaml:"timeLeft"`
	Timestamp           int64         `yaml:"timestamp"`
	TypeID              int64         `yaml:"typeID"`
	VulnerableTime      int64         `yaml:"vulnerableTime"`
}

type SkyhookUnderAttack

type SkyhookUnderAttack struct {
	AllianceID            int64         `yaml:"allianceID"`
	AllianceLinkData      []interface{} `yaml:"allianceLinkData"`
	AllianceName          string        `yaml:"allianceName"`
	ArmorPercentage       float64       `yaml:"armorPercentage"`
	CharID                int64         `yaml:"charID"`
	CorpLinkData          []interface{} `yaml:"corpLinkData"`
	CorpName              string        `yaml:"corpName"`
	IsActive              bool          `yaml:"isActive"`
	ItemID                string        `yaml:"itemID"`
	PlanetID              int64         `yaml:"planetID"`
	PlanetShowInfoData    []interface{} `yaml:"planetShowInfoData"`
	HullPercentage        float64       `yaml:"hullPercentage"`
	ShieldPercentage      float64       `yaml:"shieldPercentage"`
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	SkyhookShowInfoData   []interface{} `yaml:"skyhookShowInfoData"`
	TypeID                int64         `yaml:"typeID"`
}

type SovAllClaimAquiredMsg

type SovAllClaimAquiredMsg struct {
	AllianceID    int64 `yaml:"allianceID"`
	CorpID        int64 `yaml:"corpID"`
	SolarSystemID int64 `yaml:"solarSystemID"`
}

type SovAllClaimLostMsg

type SovAllClaimLostMsg struct {
	AllianceID    int64 `yaml:"allianceID"`
	CorpID        int64 `yaml:"corpID"`
	SolarSystemID int64 `yaml:"solarSystemID"`
}

type SovCommandNodeEventStarted

type SovCommandNodeEventStarted struct {
	CampaignEventType int32 `yaml:"campaignEventType"`
	ConstellationID   int64 `yaml:"constellationID"`
	SolarSystemID     int64 `yaml:"solarSystemID"`
}

type SovStationEnteredFreeport

type SovStationEnteredFreeport struct {
	Freeportexittime int64 `yaml:"freeportexittime"`
	SolarSystemID    int64 `yaml:"solarSystemID"`
	StructureTypeID  int64 `yaml:"structureTypeID"`
}

type SovStructureDestroyed

type SovStructureDestroyed struct {
	SolarSystemID   int64 `yaml:"solarSystemID"`
	StructureTypeID int64 `yaml:"structureTypeID"`
}

type SovStructureReinforced

type SovStructureReinforced struct {
	CampaignEventType int32 `yaml:"campaignEventType"`
	DecloakTime       int64 `yaml:"decloakTime"`
	SolarSystemID     int64 `yaml:"solarSystemID"`
}

type SovStructureSelfDestructCancel

type SovStructureSelfDestructCancel struct {
	CharID          int64 `yaml:"charID"`
	SolarSystemID   int64 `yaml:"solarSystemID"`
	StructureTypeID int64 `yaml:"structureTypeID"`
}

type SovStructureSelfDestructFinished

type SovStructureSelfDestructFinished struct {
	SolarSystemID   int64 `yaml:"solarSystemID"`
	StructureTypeID int64 `yaml:"structureTypeID"`
}

type SovStructureSelfDestructRequested

type SovStructureSelfDestructRequested struct {
	CharID          int64  `yaml:"charID"`
	CorpName        string `yaml:"corpName"`
	DestructTime    int64  `yaml:"destructTime"`
	SolarSystemID   int64  `yaml:"solarSystemID"`
	StructureTypeID int64  `yaml:"structureTypeID"`
}

type SovereigntyIHDamageMsg

type SovereigntyIHDamageMsg struct {
	AggressorAllianceID int64   `yaml:"aggressorAllianceID"`
	AggressorCorpID     int64   `yaml:"aggressorCorpID"`
	AggressorID         int64   `yaml:"aggressorID"`
	ArmorValue          float64 `yaml:"armorValue"`
	HullValue           float64 `yaml:"hullValue"`
	ShieldValue         float64 `yaml:"shieldValue"`
	SolarSystemID       int64   `yaml:"solarSystemID"`
}

type SovereigntySBUDamageMsg

type SovereigntySBUDamageMsg struct {
	AggressorAllianceID int64   `yaml:"aggressorAllianceID"`
	AggressorCorpID     int64   `yaml:"aggressorCorpID"`
	AggressorID         int64   `yaml:"aggressorID"`
	ArmorValue          float64 `yaml:"armorValue"`
	HullValue           float64 `yaml:"hullValue"`
	ShieldValue         float64 `yaml:"shieldValue"`
	SolarSystemID       int64   `yaml:"solarSystemID"`
}

type SovereigntyTCUDamageMsg

type SovereigntyTCUDamageMsg struct {
	AggressorAllianceID int64   `yaml:"aggressorAllianceID"`
	AggressorCorpID     int64   `yaml:"aggressorCorpID"`
	AggressorID         int64   `yaml:"aggressorID"`
	ArmorValue          float64 `yaml:"armorValue"`
	HullValue           float64 `yaml:"hullValue"`
	ShieldValue         float64 `yaml:"shieldValue"`
	SolarSystemID       int64   `yaml:"solarSystemID"`
}

type StationServiceDisabled

type StationServiceDisabled struct {
	SolarSystemID   int64 `yaml:"solarSystemID"`
	StructureTypeID int64 `yaml:"structureTypeID"`
}

type StationServiceEnabled

type StationServiceEnabled struct {
	SolarSystemID   int64 `yaml:"solarSystemID"`
	StructureTypeID int64 `yaml:"structureTypeID"`
}

type StringOrArray

type StringOrArray []string

StringOrArray is a custom type that can unmarshal both string and []string from JSON

func (StringOrArray) MarshalJSON

func (s StringOrArray) MarshalJSON() ([]byte, error)

MarshalJSON implements custom marshaling for StringOrArray

func (*StringOrArray) UnmarshalJSON

func (s *StringOrArray) UnmarshalJSON(data []byte) error

UnmarshalJSON implements custom unmarshaling for StringOrArray

type StructureAnchoring

type StructureAnchoring struct {
	OwnerCorpLinkData     []interface{} `yaml:"ownerCorpLinkData"`
	OwnerCorpName         string        `yaml:"ownerCorpName"`
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
	TimeLeft              int64         `yaml:"timeLeft"`
	VulnerableTime        int64         `yaml:"vulnerableTime"`
}

type StructureDestroyed

type StructureDestroyed struct {
	OwnerCorpLinkData     []interface{} `yaml:"ownerCorpLinkData"`
	OwnerCorpName         string        `yaml:"ownerCorpName"`
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
}

type StructureFuelAlert

type StructureFuelAlert struct {
	ListOfTypesAndQty     [][]int64     `yaml:"listOfTypesAndQty"`
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
}

type StructureImpendingAbandonmentAssetsAtRisk

type StructureImpendingAbandonmentAssetsAtRisk struct {
	DaysUntilAbandon      int32         `yaml:"daysUntilAbandon"`
	IsCorpOwned           bool          `yaml:"isCorpOwned"`
	SolarSystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureLink         string        `yaml:"structureLink"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
}

type StructureItemsDelivered

type StructureItemsDelivered struct {
	CharID                int64         `yaml:"charID"`
	ListOfTypesAndQty     [][]int64     `yaml:"listOfTypesAndQty"`
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
}

type StructureItemsMovedToSafety

type StructureItemsMovedToSafety struct {
	AssetSafetyDurationFull     int64         `yaml:"assetSafetyDurationFull"`
	AssetSafetyDurationMinimum  int64         `yaml:"assetSafetyDurationMinimum"`
	AssetSafetyFullTimestamp    int64         `yaml:"assetSafetyFullTimestamp"`
	AssetSafetyMinimumTimestamp int64         `yaml:"assetSafetyMinimumTimestamp"`
	IsCorpOwned                 bool          `yaml:"isCorpOwned"`
	NewStationID                int64         `yaml:"newStationID"`
	SolarSystemID               int64         `yaml:"solarsystemID"`
	StructureID                 int64         `yaml:"structureID"`
	StructureLink               string        `yaml:"structureLink"`
	StructureShowInfoData       []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID             int64         `yaml:"structureTypeID"`
}

type StructureLostArmor

type StructureLostArmor struct {
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
	TimeLeft              int64         `yaml:"timeLeft"`
	Timestamp             int64         `yaml:"timestamp"`
	VulnerableTime        int64         `yaml:"vulnerableTime"`
}

type StructureLostShields

type StructureLostShields struct {
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
	TimeLeft              int64         `yaml:"timeLeft"`
	Timestamp             int64         `yaml:"timestamp"`
	VulnerableTime        int64         `yaml:"vulnerableTime"`
}

type StructureOnline

type StructureOnline struct {
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
}

type StructureServicesOffline

type StructureServicesOffline struct {
	ListOfServiceModuleIDs []int64       `yaml:"listOfServiceModuleIDs"`
	SolarsystemID          int64         `yaml:"solarsystemID"`
	StructureID            int64         `yaml:"structureID"`
	StructureShowInfoData  []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID        int64         `yaml:"structureTypeID"`
}

type StructureUnanchoring

type StructureUnanchoring struct {
	OwnerCorpLinkData     []interface{} `yaml:"ownerCorpLinkData"`
	OwnerCorpName         string        `yaml:"ownerCorpName"`
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
	TimeLeft              int64         `yaml:"timeLeft"`
}

type StructureUnderAttack

type StructureUnderAttack struct {
	AllianceID            int64         `yaml:"allianceID"`
	AllianceLinkData      []interface{} `yaml:"allianceLinkData"`
	AllianceName          string        `yaml:"allianceName"`
	ArmorPercentage       float64       `yaml:"armorPercentage"`
	CharID                int64         `yaml:"charID"`
	CorpLinkData          []interface{} `yaml:"corpLinkData"`
	CorpName              string        `yaml:"corpName"`
	HullPercentage        float64       `yaml:"hullPercentage"`
	ShieldPercentage      float64       `yaml:"shieldPercentage"`
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
}

type StructureWentHighPower

type StructureWentHighPower struct {
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
}

type StructureWentLowPower

type StructureWentLowPower struct {
	SolarsystemID         int64         `yaml:"solarsystemID"`
	StructureID           int64         `yaml:"structureID"`
	StructureShowInfoData []interface{} `yaml:"structureShowInfoData"`
	StructureTypeID       int64         `yaml:"structureTypeID"`
}

type StructuresReinforcementChanged

type StructuresReinforcementChanged struct {
	AllStructureInfo [][]interface{} `yaml:"allStructureInfo"`
	Hour             int32           `yaml:"hour"`
	NumStructures    int32           `yaml:"numStructures"`
	Timestamp        int64           `yaml:"timestamp"`
	Weekday          int32           `yaml:"weekday"`
}

type TowerAlertMsg

type TowerAlertMsg struct {
	AggressorAllianceID int64   `yaml:"aggressorAllianceID"`
	AggressorCorpID     int64   `yaml:"aggressorCorpID"`
	AggressorID         int64   `yaml:"aggressorID"`
	ArmorValue          float64 `yaml:"armorValue"`
	HullValue           float64 `yaml:"hullValue"`
	MoonID              int64   `yaml:"moonID"`
	ShieldValue         float64 `yaml:"shieldValue"`
	SolarSystemID       int64   `yaml:"solarSystemID"`
	TypeID              int64   `yaml:"typeID"`
}

type TowerResourceAlertMsg

type TowerResourceAlertMsg struct {
	AllianceID    int64 `yaml:"allianceID"`
	CorpID        int64 `yaml:"corpID"`
	MoonID        int64 `yaml:"moonID"`
	SolarSystemID int64 `yaml:"solarSystemID"`
	TypeID        int64 `yaml:"typeID"`
	Wants         []struct {
		Quantity int32 `yaml:"quantity"`
		TypeID   int64 `yaml:"typeID"`
	} `yaml:"wants"`
}

type WarAdopted

type WarAdopted struct {
	AgainstID    int64 `yaml:"againstID"`
	AllianceID   int64 `yaml:"allianceID"`
	DeclaredByID int64 `yaml:"declaredByID"`
}

type WarAllyOfferDeclinedMsg

type WarAllyOfferDeclinedMsg struct {
	AggressorID int64 `yaml:"aggressorID"`
	AllyID      int64 `yaml:"allyID"`
	CharID      int64 `yaml:"charID"`
	DefenderID  int64 `yaml:"defenderID"`
}

type WarDeclared

type WarDeclared struct {
	AgainstID    int64         `yaml:"againstID"`
	Cost         float64       `yaml:"cost"`
	DeclaredByID int64         `yaml:"declaredByID"`
	DelayHours   int32         `yaml:"delayHours"`
	HostileState bool          `yaml:"hostileState"`
	TimeStarted  int64         `yaml:"timeStarted"`
	WarHQ        string        `yaml:"warHQ"`
	WarHQIdType  []interface{} `yaml:"warHQ_IdType"`
}

type WarHQRemovedFromSpace

type WarHQRemovedFromSpace struct {
	AgainstID    int64  `yaml:"againstID"`
	DeclaredByID int64  `yaml:"declaredByID"`
	TimeDeclared int64  `yaml:"timeDeclared"`
	WarHQ        string `yaml:"warHQ"`
}

type WarInherited

type WarInherited struct {
	AgainstID    int64 `yaml:"againstID"`
	AllianceID   int64 `yaml:"allianceID"`
	DeclaredByID int64 `yaml:"declaredByID"`
	OpponentID   int64 `yaml:"opponentID"`
	QuitterID    int64 `yaml:"quitterID"`
}

type WarInvalid

type WarInvalid struct {
	AgainstID    int64 `yaml:"againstID"`
	DeclaredByID int64 `yaml:"declaredByID"`
	EndDate      int64 `yaml:"endDate"`
}

type WarRetractedByConcord

type WarRetractedByConcord struct {
	AgainstID    int64 `yaml:"againstID"`
	DeclaredByID int64 `yaml:"declaredByID"`
	EndDate      int64 `yaml:"endDate"`
}

type WarSurrenderDeclinedMsg

type WarSurrenderDeclinedMsg struct {
	IskValue float64 `yaml:"iskValue"`
	OwnerID  int64   `yaml:"ownerID"`
}

type WarSurrenderOfferMsg

type WarSurrenderOfferMsg struct {
	IskValue         float64 `yaml:"iskValue"`
	OwnerID1         int64   `yaml:"ownerID1"`
	OwnerID2         int64   `yaml:"ownerID2"`
	WarNegotiationID int64   `yaml:"warNegotiationID"`
}

Directories

Path Synopsis
examples
basic-oauth2 command
context-auth command

Jump to

Keyboard shortcuts

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