syntax = "proto3"; package fincleartech.ibroker; option java_package = "io.fincleartech.protobuf.ibroker.settlement"; option java_multiple_files = true; import "google/protobuf/wrappers.proto"; import "google/rpc/status.proto"; import "fincleartech/ibroker/common.proto"; message MovementDetails { // Identifies the security in which units are being transferred. google.protobuf.StringValue security_code = 14; // The Unit Quantity of the Security Code which is being transferred. This must be a positive whole number // greater than 0, with no decimal places. // The Delivering Account (HIN) must have sufficient available units greater than or equal to the Unit Quantity // for the specified security. fincleartech.ibroker.NumberValue units = 16; // The Transaction Basis field characterises the movement of securities. // // # Valid Values: // // - F Facility for non-reportable transactions. // - I IPO transaction. // - M Market. // - L Stock lending activity. // - O Off-market. google.protobuf.StringValue transaction_basis = 17; // The Override Basis of Movement field(s) allow a Participant to optionally Override the default Basis of Movement // for the transaction where there are current corporate actions. // There can be up to 3 Override Basis of Movement present. // // # Valid Values: // // - CB Cum bonus issue. // - CC Cum capital return. // - CD Cum dividend. // - CE Cum entitlement (non-renounceable rights). // - CI Cum interest. // - CM Cum premium return. // - CQ Cum equal-access buyback. // - CR Cum rights issue (renounceable rights). // - CZ Cum non pro rata balance. // - XB Ex bonus issue. // - XC Ex capital return. // - XD Ex dividend. // - XE Ex entitlement (non-renounceable rights). // - XI Ex interest. // - XM Ex premium return. // - XQ Ex equal-access buyback. // - XR Ex rights issue (renounceable rights). // - XZ Ex non pro rata balance. repeated google.protobuf.StringValue basis_of_movement = 13; // Movement reason. // // # Valid values: // // - A Holder in Liquidation // - B balance transfer // - C holder request // - D Deceased Estate // - E Holder Bankrupt // - F Security Closed // - G Withdrawal of Participant // - I IPO Transaction // - Z Action by ASX operations google.protobuf.StringValue movement_reason = 20; // The Guaranteed Foreign Indicator of the matched Bilateral Demand Transfer. Indicates that the transfer // was agreed to take place between two Accounts (HINs) with a Residency Indicator of "Foreign". // // # Valid values: // // - OR google.protobuf.StringValue guaranteed_foreign_indicator = 22; } message ReferenceDetails { // The Supplementary Reference field allows a Participant to optionally include a reference on the request // which will be passed to the Counterparty (if member of Participant Group). // No business validations are performed on this field. google.protobuf.StringValue supplementary_reference = 9; // The Participant Reference field allows a Participant to optionally include a reference on the request // which remains private to the Sender Participant. No business validations are performed on this field. google.protobuf.StringValue participant_reference = 10; // The Underlying Reference field allows a Participant to optionally include an additional reference on the // request which remains private to the Sender Participant. No business validations are performed on this field. google.protobuf.StringValue underlying_reference = 11; } // DEMAND TRANSFERS ====================================================================== message DemandTransferRequest { // A universally unique identifier for this request. Used for idempotency and correlation with asynchronous notifications. google.protobuf.StringValue request_id = 1; // Request message references ReferenceDetails reference_details = 9; // Details of the security, units, movement reason, basis of movement, guaranteed foreign indicator MovementDetails movement_details = 13; // The Delivering Participant identifies the Participant delivering units. google.protobuf.StringValue delivering_participant = 18; // The Delivering Account (HIN) is the Account (HIN) from which units are being delivered. Delivery of units // is only permitted from Accounts which are active and have not been locked or cancelled. google.protobuf.StringValue delivering_settlement_account = 19; // The Receiving Participant identifies the Participant receiving units. This can be the same as the Delivering // Participant. Alternatively, it can be a different Participant if it is associated with the Delivering // Participant in a Participant Group. google.protobuf.StringValue receiving_participant = 20; // The Receiving Account (HIN) is the Account (HIN) for which units are being received. Receipt of units is // allowed into Accounts which are active, or have been locked, but must not have been cancelled. google.protobuf.StringValue receiving_settlement_account = 21; // The Secondary Matching Flag (SMAT) that indicates the transaction must match on the value present // in the Supplementary Reference. google.protobuf.StringValue secondary_matching_flag = 23; } message DemandTransferResponse { google.rpc.Status status = 1; } message DemandTransferStatusAdvice { // Correlation request identifier google.protobuf.StringValue request_id = 1; // transaction id google.protobuf.StringValue transaction_id = 2; // transfer currently unmatched google.protobuf.BoolValue unmatched = 3; // transfer cancelled. google.protobuf.BoolValue cancelled = 4; } message DemandTransferConfirmation { // Correlation request identifier google.protobuf.StringValue request_id = 1; // Request message references ReferenceDetails reference_details = 9; // Details of the security, units, movement reason, basis of movement, guaranteed foreign indicator MovementDetails movement_details = 13; // The Delivering Participant identifies the Participant delivering units. google.protobuf.StringValue delivering_participant = 18; // The Delivering Account (HIN) is the Account (HIN) from which units are being delivered. Delivery of units // is only permitted from Accounts which are active and have not been locked or cancelled. google.protobuf.StringValue delivering_settlement_account = 19; // The Receiving Participant identifies the Participant receiving units. This can be the same as the Delivering // Participant. Alternatively, it can be a different Participant if it is associated with the Delivering // Participant in a Participant Group. google.protobuf.StringValue receiving_participant = 20; // The Receiving Account (HIN) is the Account (HIN) for which units are being received. Receipt of units is // allowed into Accounts which are active, or have been locked, but must not have been cancelled. google.protobuf.StringValue receiving_settlement_account = 21; // The Secondary Matching Flag (SMAT) that indicates the transaction must match on the value present // in the Supplementary Reference. google.protobuf.StringValue secondary_matching_flag = 23; // Final balance. fincleartech.ibroker.NumberValue delivering_holding_balance = 31; // Final balance. fincleartech.ibroker.NumberValue receiving_holding_balance = 32; // Effective settlement date. fincleartech.ibroker.DateTimeValue effective_settlement_date = 33; // transaction id google.protobuf.StringValue transaction_id = 2; } // TRANSFERS ====================================================================== enum TransferType { TRANSFER_TYPE_NOT_SET = 0; TRANSFER_TYPE_PARTICIPANT_TO_ISSUER_SPONSORED = 1; TRANSFER_TYPE_ISSUER_SPONSORED_TO_PARTICIPANT = 2; } message TransferRequest { // A universally unique identifier for this request. Used for idempotency and correlation with asynchronous notifications. google.protobuf.StringValue request_id = 1; // Transfer type. TransferType transfer_type = 2; // Request message references ReferenceDetails reference_details = 9; // Details of the security, units, movement reason, basis of movement, guaranteed foreign indicator MovementDetails movement_details = 13; // The Participant identifies the Participant delivering/receiving units. google.protobuf.StringValue participant = 18; // The Account (HIN) is the Account (HIN) from which units are being delivered/received. google.protobuf.StringValue settlement_account = 19; // SRN google.protobuf.StringValue srn = 23; // iBroker account google.protobuf.StringValue broker_account = 24; } message TransferResponse { google.rpc.Status status = 1; } message TransferConfirmation { // Correlation request identifier google.protobuf.StringValue request_id = 1; // Transfer type. TransferType transfer_type = 2; // Request message references ReferenceDetails reference_details = 9; // Details of the security, units, movement reason, basis of movement, guaranteed foreign indicator MovementDetails movement_details = 13; // The Participant identifies the Participant delivering/receiving units. google.protobuf.StringValue participant = 18; // The Delivering Account (HIN) is the Account (HIN) from which units are being received/delivered. google.protobuf.StringValue settlement_account = 19; // Optional SRN google.protobuf.StringValue srn = 23; // New balance. fincleartech.ibroker.NumberValue new_total_holding_balance = 32; // transaction id google.protobuf.StringValue transaction_id = 26; // Optional registration reference google.protobuf.StringValue registration_reference = 24; } // CONVERSIONS ====================================================================== enum ConversionType { CONVERSION_TYPE_NOT_SET = 0; CONVERSION_TYPE_PARTICIPANT_TO_ISSUER_SPONSORED = 1; CONVERSION_TYPE_ISSUER_SPONSORED_TO_PARTICIPANT = 2; } message ConversionRequest { // A universally unique identifier for this request. Used for idempotency and correlation with asynchronous notifications. google.protobuf.StringValue request_id = 1; // Conversion type. ConversionType conversion_type = 2; // Request message references ReferenceDetails reference_details = 9; // Details of the security, units, movement reason, basis of movement, guaranteed foreign indicator MovementDetails movement_details = 13; // The Participant identifies the Participant delivering/receiving units. google.protobuf.StringValue participant = 18; // The Account (HIN) is the Account (HIN) from which units are being delivered/received. google.protobuf.StringValue settlement_account = 19; // Optional SRN google.protobuf.StringValue srn = 23; // Populated with an Account Identifier that links to the Account Notification that will be sent to the // Issuer (Registry). In this process the Registration Reference must be populated with a // 'Registration Identifier' (RGID) that is controlled by the Sender Participant. google.protobuf.StringValue registration_reference = 24; } message ConversionResponse { google.rpc.Status status = 1; } message ConversionConfirmation { // Correlation request identifier google.protobuf.StringValue request_id = 1; // Conversion type. ConversionType conversion_type = 2; // Request message references ReferenceDetails reference_details = 9; // Details of the security, units, movement reason, basis of movement, guaranteed foreign indicator MovementDetails movement_details = 13; // The Participant identifies the Participant delivering/receiving units. google.protobuf.StringValue participant = 18; // The Account (HIN) is the Account (HIN) from which units are being delivered/received. google.protobuf.StringValue settlement_account = 19; // Optional SRN google.protobuf.StringValue srn = 23; // New balance. fincleartech.ibroker.NumberValue new_total_holding_balance = 32; // transaction id google.protobuf.StringValue transaction_id = 24; } // Sent to the Participant, acknowledging that the Request is pending authorisation with the Issuer (Registry). message TransferConversionAcknowledgement { // Correlation request identifier google.protobuf.StringValue request_id = 1; // transaction id google.protobuf.StringValue transaction_id = 2; } message TransferConversionRejected { // Correlation request identifier google.protobuf.StringValue request_id = 1; // Registry reference. google.protobuf.StringValue registry_reference = 3; // Rejection movement reason google.protobuf.StringValue rejection_movement_reason = 4; // transaction id google.protobuf.StringValue transaction_id = 2; } message TransferConversionRequestCancelled { // Correlation request identifier google.protobuf.StringValue request_id = 1; // Reason. google.protobuf.StringValue reason = 2; // transaction id google.protobuf.StringValue transaction_id = 3; } message InvalidRequestNotification { // Correlation request identifier google.protobuf.StringValue request_id = 1; } service IBrokerSettlementService { // A request to transfer securities, immediately, FoP, between two Accounts (HINs), controlled by a single Participant or // between two Accounts (HINs) controlled by separate Participants within a Participant Group or between two Accounts (HINs), // controlled by two different Participants. rpc DemandTransfer(DemandTransferRequest) returns (DemandTransferResponse); // A request to transfer securities, Free of Payment (FoP), from a Participant controlled Account (HIN) in the CSP, // to an Issuer Sponsored Holding, maintained on the Issuer Sponsored Sub-register or from an Issuer Sponsored Holding, // maintained on the Issuer Sponsored Sub-register, to a Participant controlled Account in the CSP. rpc Transfer(TransferRequest) returns (TransferResponse); // A request to convert securities, FoP, from an Issuer Sponsored Holding, maintained on the Issuer Sponsored Sub-register, // to a Participant controlled Account (HIN) in the CSP or from a Participant controlled Account (HIN) in the CSP, to an // Issuer Sponsored Holding, maintained on the Issuer Sponsored Sub-register. rpc Conversion(ConversionRequest) returns (ConversionResponse); }