syntax = "proto3";
package ix;

message GetIXMembersRequest {
    // IX ID from PeeringDB
    int64 id = 1;
}

message PeeringDBMember {
    int64 asn = 1;
    // AS/network name.
    string name = 2;

    message Router {
        // Per PeeringDB, at least one of the following two address families
        // will be set.
        string ipv4 = 1;
        string ipv6 = 2;
    }
    repeated Router routers = 3;
}


message GetIXMembersResponse {
    message Member {
        int64 asn = 1;
        // Per PeeringDB, at least one of the following two address families
        // will be set.
        string ipv4 = 2;
        string ipv6 = 3;
        // AS/network name.
        string name = 4;
    };

    repeated Member members = 1;
}

service PeeringDBProxy {
    // GetIXMembers returns information about membership of a given PeeringDB IX.
    rpc GetIXMembers(GetIXMembersRequest) returns (GetIXMembersResponse);
}

message IRRQueryRequest {
    // AS to query for. This needs be the AS number of the AS, possibly
    // prefixed with 'as'/'AS'.
    string as = 1;
}

message IRRAttribute {
    message ImportExport {
        message Expression {
            string peering = 1;
            string router_us = 2;
            string router_them = 3;
            repeated string actions = 4;
        }
        string protocol_from = 1;
        string protocol_into = 2;
        repeated Expression expressions = 3;
        string filter = 4;
    }

    oneof value {
        string remarks = 1;
        ImportExport import = 2;
        ImportExport export = 3;
    }
}

message IRRQueryResponse {
    enum Source {
        SOURCE_INVALID = 0;
        SOURCE_RIPE = 1;
        SOURCE_ARIN = 2;
    }
    Source source = 1;
    repeated IRRAttribute attributes = 2;
}

service IRR {
    // Query returns parsed RPSL data from supported IRRs for a given aut-num.
    rpc Query(IRRQueryRequest) returns (IRRQueryResponse);
}
