moeix-home/src/schema/ixf.d.ts

390 lines
8.7 KiB
TypeScript

/* eslint-disable */
/**
* This file was automatically generated by json-schema-to-typescript.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run json-schema-to-typescript to regenerate this file.
*/
/**
* Version number of the schema; this is not the version of the file within an IXP; but the schema version
*/
export type IXPMemberListSchemaVersion = string;
/**
* Timestamp of when the data was exported
*/
export type IXPMemberListSchemaExportTimestamp = string;
/**
* A list of schemas representing IXP information
*/
export type IXPInfoList = {
/**
* IXP numeric identifier, persistent value free to set by the IXP
*/
ixp_id: number;
/**
* Short name of the IXP
*/
shortname: string;
/**
* Name of the IXP
*/
name?: string;
/**
* Website of the IXP
*/
url?: string;
/**
* URL to statistics API
*/
stats_api?: string;
/**
* ISO country code where the IXP is located
*/
country?: string;
/**
* IXP ID from the IX-F database
*/
ixf_id: number;
/**
* PeeringDB ID of the IX - the y in: https://www.peeringdb.com/ix/y
*/
peeringdb_id?: number;
/**
* Support email address
*/
support_email?: string;
/**
* Support phone number
*/
support_phone?: string;
/**
* Support contact hours, eg. 24/7, 8/5, etc
*/
support_contact_hours?: string;
/**
* Emergency support email address
*/
emergency_email?: string;
/**
* Emergency support phone number
*/
emergency_phone?: string;
/**
* Emergency support contact hours, eg. 24/7, 8/5, etc
*/
emergency_contact_hours?: string;
/**
* Billing email address
*/
billing_email?: string;
/**
* Billing phone number
*/
billing_phone?: string;
/**
* Billing contact hours, eg. 24/7, 8/5, etc
*/
billing_contact_hours?: string;
/**
* Peering policy choices available in the member list
*/
peering_policy_list?: string[];
/**
* Switches available at the IXP
*/
switch?: {
/**
* Unique ID of the switch
*/
id?: number;
/**
* Switch name
*/
name?: string;
/**
* Colo the switch is located in
*/
colo?: string;
/**
* Peering DB ID of the data centre
*/
pdb_facility_id?: number;
/**
* City the switch is located in
*/
city?: string;
/**
* Country the switch is located in
*/
country?: string;
/**
* Free text field to indicate the manufacturer of the switch for informational purposes.
*/
manufacturer?: string;
/**
* Free text field to indicate the model of the switch for informational purposes. Should not be present without manufacturer.
*/
model?: string;
/**
* Free text field to indicate the software of the switch for informational purposes.
*/
software?: string;
[k: string]: unknown;
}[];
/**
* VLANs available at the IXP
*/
vlan?: {
/**
* Unique ID of the VLAN
*/
id?: number;
/**
* VLAN name
*/
name?: string;
/**
* IPv4 details in this VLAN
*/
ipv4?: {
/**
* Prefix of the IPv4 address
*/
prefix?: string;
/**
* Mask length of the IPv4 address
*/
mask_length?: number;
/**
* URLs of looking glass(es) available for this VLAN and protocol.
*/
looking_glass_urls?: string[];
[k: string]: unknown;
};
/**
* IPv6 details in this VLAN
*/
ipv6?: {
/**
* Prefix of the IPv6 address
*/
prefix?: string;
/**
* Mask length of the IPv6 address
*/
mask_length?: number;
/**
* URLs of looking glass(es) available for this VLAN and protocol.
*/
looking_glass_urls?: string[];
[k: string]: unknown;
};
[k: string]: unknown;
}[];
[k: string]: unknown;
}[];
/**
* A list of schemas representing IXP members
*/
export type IXPMemberList = {
/**
* AS number of the network
*/
asnum: number;
/**
* Participant type: peering, ixp or other
*/
member_type?: "peering" | "ixp" | "other";
/**
* Name of the network
*/
name?: string;
/**
* URL to website of the network
*/
url?: string;
/**
* Peering policy of the network
*/
peering_policy?: string;
/**
* URL to the network's peering policy
*/
peering_policy_url?: string;
/**
* Date when the network joined the IXP
*/
member_since?: string;
/**
* List of contact email addresses of the network
*/
contact_email?: string[];
/**
* List of contact phone numbers of the network
*/
contact_phone?: string[];
/**
* Network contact hours, eg. 24/7, 8/5, etc
*/
contact_hours?: string;
/**
* List of connections of the network at the IXP
*/
connection_list: {
/**
* IXP numeric identifier, persistent value free to set by the IXP, referencing the same ID as used in the ixp_list element
*/
ixp_id: number;
/**
* State of the connection
*/
state?: string;
/**
* Date when the connection was activated
*/
connected_since?: string;
/**
* List of interfaces making up the connection
*/
if_list?: {
/**
* Switch ID where the interface or LAG is connected, persistent value free to set by the IXP
*/
switch_id?: number;
/**
* Speed of the interface or LAG in Mb, i.e. 10G = 10000
*/
if_speed?: number;
/**
* Type of the interface or LAG
*/
if_type?: string;
[k: string]: unknown;
}[];
vlan_list?: {
/**
* The VLAN ID this connection is placed in, persistent value free to set by the IXP
*/
vlan_id?: number;
/**
* The network's IPv4 address details in this VLAN
*/
ipv4?: {
/**
* The IPv4 address
*/
address?: string;
/**
* The IPv4 AS-MACRO, if applicable
*/
as_macro?: string;
/**
* The max number of prefixes on this connection for IPv4
*/
max_prefix?: number;
/**
* Does this IPv4 address connect to the IXP routeserver
*/
routeserver?: boolean;
/**
* MAC address of the member interface (format: lowercase string xx:xx:xx:xx:xx:xx)
*/
mac_addresses?: string[];
/**
* Array of IX operated service(s) available from this connection.
*/
services?: {
/**
* The IX operated service available from this connection.
*/
type?: "ixroutecollector" | "ixrouteserver";
/**
* Free text field to indicate the operating system of the route server for informational purposes.
*/
os?: string;
/**
* Free text field to indicate the operating system version of the route server for informational purposes. Should not be present without os.
*/
os_version?: string;
/**
* Free text field to indicate the BGP software daemon that provides the route server for informational purposes.
*/
daemon?: string;
/**
* Free text field to indicate the BGP software daemon version that provides the route server for informational purposes. Should not be present without daemon.
*/
daemon_version?: string;
[k: string]: unknown;
}[];
[k: string]: unknown;
};
/**
* The network's IPv6 address details in this VLAN
*/
ipv6?: {
/**
* The IPv6 address
*/
address?: string;
/**
* The IPv6 AS-MACRO, if applicable
*/
as_macro?: string;
/**
* The max number of prefixes on this connection for IPv6
*/
max_prefix?: number;
/**
* Does this IPv6 address connect to the IXP routeserver
*/
routeserver?: boolean;
/**
* MAC address of the member interface (format: lowercase string xx:xx:xx:xx:xx:xx)
*/
mac_addresses?: string[];
/**
* Array of IX operated service(s) available from this connection.
*/
services?: {
/**
* The IX operated service available from this connection.
*/
type?: "ixroutecollector" | "ixrouteserver";
/**
* Free text field to indicate the operating system of the route server for informational purposes.
*/
os?: string;
/**
* Free text field to indicate the operating system version of the route server for informational purposes. Should not be present without os.
*/
os_version?: string;
/**
* Free text field to indicate the BGP software daemon that provides the route server for informational purposes.
*/
daemon?: string;
/**
* Free text field to indicate the BGP software daemon version that provides the route server for informational purposes. Should not be present without daemon.
*/
daemon_version?: string;
[k: string]: unknown;
}[];
[k: string]: unknown;
};
[k: string]: unknown;
}[];
[k: string]: unknown;
}[];
[k: string]: unknown;
}[];
/**
* A JSON schema representing an IXP Member List
*/
export interface IXPMemberListSchema {
version: IXPMemberListSchemaVersion;
timestamp: IXPMemberListSchemaExportTimestamp;
ixp_list: IXPInfoList;
member_list: IXPMemberList;
[k: string]: unknown;
}