NAV Navbar
Logo
json xml csv

Introduction

Example requests and responses will appear in this panel. You can select the response format with the tabs above.

The EBU API is a RESTful API for communicating with the English Bridge Union website. It can be used by members, clubs and counties and is the backbone to the My EBU members area.

This document is intended for developers only; we would not recommend that members fiddle with these API calls. There is very little that you can do with the API that you cannot do in My EBU.

Developers are assumed to have some knowledge of how to make HTTPS calls in whatever language they are using. If not, there are far better internet resources to explain this than a bridge union website!

Authentication

Most API calls require authentication to use, for obvious reasons. This is done with either a username/password or a username/token. To add a username/password to your API request you must use the Basic Authentication header. This does make the new API harder to test in a web browser, which is why we recommend the Postman Chrome extension, which makes it very simple to set up and submit HTTP requests.

We have prepared a brief YouTube Video covering how to use Postman.

Tokens

If you submit the parameter reqtoken=1 to the login request a 72-character token will be generated and returned. In future requests (until the token expires) you can use this instead of a password, by submitting a blank password and adding the token to the token parameter.

This is useful to store as a cookie in a website if you (quite rightly) do not want to store the password in plain text during the session. In future we might extend this so that members can generate tokens for third parties without the third party ever having to have the password. Please let us know if this is something that would interest you.

Using a token

Once you have a token you can use this instead of a password. Set the password to blank, and add the token as a URL parameter. e.g.

GET https://www.ebu.co.uk/members/api-3.1/sessions?token=123456789etc

Note that you still need to send the Basic Authentication header, but it will only have the user name and no password.

A note on counties

Throughout this document you will notice that you can only log in as a member, a club or a county. For the purposes of My EBU and the API, organisations which are neither a club nor a county are largely treated as a county. This includes districts, holiday companies and foreign clubs. A few operations are restricted only to genuine counties, but in most ways these other organisations interact with the API in the same way as counties do.

A note on club scorers

It is possible to identify a member of a club as being a designated scorer. This gives them access to some API functions that members normally wouldn’t have, usually involving submission of session results. For the most part, their access will be the same as for a club or county when using these functions, but we will attempt to identify the situations where it differs.

Response format

You can specify the format of the response by setting the Accept header to one of the following values:

You can find examples of all three responses throughout this document in the panel to the right. Click on the tabs at the top to switch to the one you’re most interested in.

Field formats

EBU numbers

EBU membership numbers are always zero-padded to be 8 digits in length. e.g. 00987654 and not 987654.

The exception to this is county membership ‘numbers’ which are always three capital letters. e.g. DEV or SUR.

Dates and times

These are usually returned as a 14-digit number in the format yyyymmddhhiiss. e.g. 20160910184000 would be 6.40pm on September 10th 2016.

Where only the date is used and time is unimportant (date of birth, for example) the time is set to midday. e.g. 20160910120000.

Booleans

True and false values are represented as '1’ and '0’ respectively.

Testing

Hello World

This is a trivial resource just used to test that your application is working, able to send a request to our server and get a response back.

HTTP request

GET https://www.ebu.co.uk/members/api-3.1/hello

{
    "response": {
        "Hello": "World",
        "process_time": "0.0506s"
    }
}
<response>
    <Hello>World</Hello>
    <process_time>0.0396s</process_time>
</response>
response
Hello,World
process_time,0.0585s

GET https://www.ebu.co.uk/members/api-3.1/hello/Suzy

{
    "response": {
        "Hello": "Suzy",
        "process_time": "0.0404s"
    }
}
<response>
    <Hello>Suzy</Hello>
    <process_time>0.0403s</process_time>
</response>
response
Hello,Suzy
process_time,0.0484s

GET https://www.ebu.co.uk/members/api-3.1/hello

GET https://www.ebu.co.uk/members/api-3.1/hello/{name}

Query parameters

Parameter Default Description
name World The name of the person you want to say hello to.

Login

Performs a login using the EBU number and password of the record. This is only really useful for an interactive website that is requesting a token (see above), since this does nothing else.

If you submit the parameter reqtoken=1 it will return a token to use in future requests (see above).

HTTP request

GET https://www.ebu.co.uk/members/api-3.1/login?reqtoken=1

{
    "response": {
        "login": "member",
        "token": "f55nLWBpytUbjf...",
        "process_time": "0.1016s"
    }
}
<response>
    <login>member</login>
    <token>f55nLWBpytUbjf...</token>
    <process_time>0.1166s</process_time>
</response>
response
login,member
token,f55nLWBpytUbjf...
process_time,0.1148s

GET https://www.ebu.co.uk/members/api-3.1/login

URL parameters

Parameter Description
reqtoken Set to 1 to get the API to return an authentication token

Response

Field Description
login The type of login: 'member’, 'club’ or 'county’. Some functions behave differently depending on what sort of record is authenticating.
token If requested, a token is returned which can be used instead of a password in future requests.
process_time How long our server took to process this request. If you are debugging a slow response, you can compare this to your own response time to see how much time is spent processing the request and how much time is taken up with internet communication.

login and process_time appear in almost every API response and won’t be noted every time below.

Record details

The details endpoint gets information about the record logging in. It will give slightly different information if you are providing member credentials than if you use club or county credentials.

Get member details

Performing a GET request with member credentials will return data about the member, and about their club memberships.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/details

{
    "response": {
        "login": "member",
        "Details": {
            "EBU": "00987654",
            "Surname": "Bonzo",
            "Forenames": "Alfonso",
            "Email": "michael@ebu.co.uk",
            "Title": "Mr",
            "Address": "Unit 4 Broadfields\nBicester Road",
            "Town": "Aylesbury",
            "County": "Buckinghamshire",
            "Country": "United Kingdom",
            "Postcode": "HP19 8AZ",
            "RegionCode": "OXF",
            "RegionName": "Oxfordshire",
            "Tel1": "01296 317200",
            "Tel2": "01296 317207",
            "DOB": "19300110120000",
            "Anonymous": "0",
            "MagazinePreference": "Only Diary Edition",
            "NGSPreference": "Public Grade and Partnerships",
            "AppearInMagazine": "0",
            "ReceiveMassEmails": "1",
            "ReceiveMassEmailsEBED": "1"
        },
        "Clubs": {
            "Primary": [
                {
                    "EBU": "00431222",
                    "ID": 772147,
                    "Name": "Test Club",
                    "Permission": "00"
                }
            ],
            "Secondary": [],
            "All": [
                {
                    "EBU": "00431222",
                    "ID": 772147,
                    "Name": "Test Club",
                    "Permission": "00"
                }
            ]
        },
        "process_time": "3.2187s"
    }
}
<response>
    <login>member</login>
    <Details>
        <EBU>00987654</EBU>
        <Surname>Bonzo</Surname>
        <Forenames>Alfonso</Forenames>
        <Email>michael@ebu.co.uk</Email>
        <Title>Mr</Title>
        <Address>Unit 4 Broadfields
Bicester Road</Address>
        <Town>Aylesbury</Town>
        <County>Buckinghamshire</County>
        <Country>United Kingdom</Country>
        <Postcode>HP19 8AZ</Postcode>
        <RegionCode>OXF</RegionCode>
        <RegionName>Oxfordshire</RegionName>
        <Tel1>01296 317200</Tel1>
        <Tel2>01296 317207</Tel2>
        <DOB>19300110120000</DOB>
        <Anonymous>0</Anonymous>
        <MagazinePreference>Only Diary Edition</MagazinePreference>
    <NGSPreference>Public Grade and Partnerships</NGSPreference>
        <AppearInMagazine>0</AppearInMagazine>
        <ReceiveMassEmails>1</ReceiveMassEmails>
        <ReceiveMassEmailsEBED>1</ReceiveMassEmails>
    </Details>
    <Clubs>
        <Primary>
            <ListItem>
                <EBU>00987650</EBU>
                <ID>999999</ID>
                <Name>Test Club</Name>
                <Permission>00</Permission>
            </ListItem>
        </Primary>
        <Secondary></Secondary>
        <All>
            <ListItem>
                <EBU>00987650</EBU>
                <ID>999999</ID>
                <Name>Test Club</Name>
                <Permission>00</Permission>
            </ListItem>
        </All>
    </Clubs>
    <process_time>3.1248s</process_time>
</response>
response
login,member
Details,00987654,Bonzo,Alfonso,michael@ebu.co.uk,Mr,Unit 4 Broadfields\nBicester Road,Aylesbury,Buckinghamshire,United Kingdom,HP19 8AZ,OXF,Oxfordshire,01296 317200,01296 317207,19300110120000,0,Only Diary Edition,0,0,1
Clubs,Array,Array
process_time,3.5581s

Note that this is one of the API calls which really does not work very well with a CSV response.

GET https://www.ebu.co.uk/members/api-3.1/details

Details Response

The following fields are returned in the Details section of the response.

Field Description
EBU The member’s EBU number.
Surname The member’s surname (family name).
Forenames The member’s forenames (can be more than one).
Email The member’s email address.
Title The member’s title e.g. Mr, Miss, Dr.
Address The street address. May contain newlines or \n characters to separate lines.
Town The address town.
County The address county. Note: not the county of affiliation.
Country The address country.
Postcode The address postcode. Foreign country equivalents also go here.
RegionCode The three-letter code of the county of primary affiliation.
RegionName The name of the county of primary affiliation.
Tel1, Tel2 The member’s telephone number(s).
DOB The date of birth.
Anonymous Boolean to show whether the member has chosen to remain anonymous to the EBU.
MagazinePreference Which paper magazines they have chosen to receive (if eligible). Can take the values ‘All Editions + Diary’, 'All Editions, No Diary’, 'Only Diary Edition’ and 'No Editions’. Be careful with this one when changing it, since you will need to URL encode the + sign or it won’t be recognised as a valid value.
NGSPreference Whether the member has chosen to keep their NGS details private. Can be set to “Public Grade and Partnerships”, “Private Grade and Partnerships” or “Public Grade, Private Partnerships”.
AppearInMagazine Whether the member wishes to appear in the magazine when they earn a landmark masterpoint promotion.
ReceiveMassEmails Whether the member wishes to opt out of mass emails sent by the EBU e.g. newsletters and magazine notifications.
ReceiveMassEmailsEBED Whether the member wishes to opt out EBED-related mass emails sent by the EBU e.g. newsletters.

Clubs Response

The Clubs section of the response is broken down into Primary, Secondary and All lists. Primary lists the one primary club which the member belongs to. Secondary lists all of the other clubs the member belongs to. And All merges both lists together so that you don’t have to. Each club entry returns the following fields:

Field Description
EBU The EBU number of the club.
ID An internal identifier. Has no use except you need to send this back if changing the club settings with the POST /details API call. See below.
Name The club’s name.
Permission A two-bit field containing the read and write permission that the club has over the member’s record, in that order. The left bit set to 1 means that the club has access to the member’s full details. The right bit set to 1 means that the club can edit the member’s details on their behalf.

Update member details

A POST request to the same endpoint will update membership details.

HTTP Request

POST https://www.ebu.co.uk/members/api-3.1/details?data={"Details": {"Forenames": "Martin"}}

{
    "response": {
        "login": "member",
        "Messages": [
            "Updating Forenames with value 'Martin' (was Harold)"
        ],
        "process_time": "1.5888s"
    }
}
<response>
    <login>member</login>
    <Messages>Updating Forenames with value 'Martin' (was Harold)</Messages>
    <process_time>1.5888s</process_time>
</response>
response
login,member
Messages,Updating Forenames with value 'Martin' (was Harold)
process_time,1.5888s

POST https://www.ebu.co.uk/members/api-3.1/details

This procedure call expects a JSON string to be sent in the data URL parameter. The format of this JSON string is identical to the corresponding GET /details JSON response above (everything below the 'response’). You can build this up yourself for simple changes, but if there’s a lot to change you will find it substantially simpler to take a copy of the response from the GET, amend it appropriately, and send it back via the POST.

Not all fields are editable by a member. In particular, RegionCode and RegionName can only be changed by application to the EBU office. DOB can also not be changed directly. Club permissions can be changed, and a different Primary Club selected, but you cannot join a new club, or resign from an old club - the club officials will need to do this.

Fields can be omitted. Their value will not be amended or deleted.

Response

Field Description
Messages A list of messages giving some narrative about what has happened.

Clubs section

To change a club permission you need to supply the ID and EBU fields exactly as they are in the GET response, above. (Yes, forcing you to supply the ID is a little ugly but this is the easiest way to speed up the response.)

Note that the data in the Primary and Secondary sections is duplicated in the All section. It’s best to keep things consistent between them, as what gets written to the database may act unpredictably otherwise.

Get club/county details

Performing a GET request with club credentials is currently far less informative than for a member. You only get the club name, but this may be extended in future.

County logins work identically to club logins for this endpoint.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/details

{
    "response": {
        "login": "club",
        "Name": "Test Club",
        "process_time": "0.5151s"
    }
}
<response>
    <login>club</login>
    <Name>Test Club</Name>
    <process_time>0.5151s</process_time>
</response>
response
login,club
Name,Test Club
process_time,0.5151s

GET https://www.ebu.co.uk/members/api-3.1/details

Response

Field Description
Name The club/county name.

Update club/county details

There is no POST equivalent for clubs or counties to update their details via the API. This may happen in future, but for now requests for changes should be sent to Kay Carter at the EBU office.

Session details

The session endpoint gets information about the sessions of the record logging in. For a member, it will return the sessions they participated in. For a club or county, it will be the sessions they ran.

Note that we use session in all of these calls and not the plural sessions. In this case we favour consistency of naming over good English.

Get list of a member’s sessions

Performing a GET request with member credentials will return a list of sessions which that member played.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/session

{
    "response": {
        "login": "member",
        "Session": [
            {
                "ID": "EBU-003621-0031",
                "SID": "EBU-003621",
                "Date": "20170101120000",
                "Score": "",
                "VPScore": "43",
                "Partner": [
                    {
                        "EBU": "00987654",
                        "Name": "Edith Hubbard"
                    }
                ],
                "MPs": "0",
                "GMPs": "0",
                "BMPs": "0",
                "Club": "EBU",
                "ClubName": "English Bridge Union",
                "NGS": [
                    {
                        "SOpp": "60.51",
                        "Partner": "00987654",
                        "PartnerName": "Edith Hubbard",
                        "PrevGrade": "59.29",
                        "NewGrade": "60.29",
                        "SessionGrade": "71.67",
                        "GradeAdj": "6.19",
                        "Boards": "24",
                        "Score": "56.55",
                        "Order": "",
                        "SeqNum": "00447104",
                        "Format": "SWISS_PAIRS"
                    }
                ]
            }
        ],
        "process_time": "4.1651s"
    }
}
<response>
    <login>member</login>
    <Session></Session>
    <Session>
        <ID>EBU-003621-0031</ID>
        <SID>EBU-003621</SID>
        <Date>20170101120000</Date>
        <Score></Score>
        <VPScore>43</VPScore>
        <Partner>
            <ListItem>
                <EBU>00987654</EBU>
                <Name>Edith Hubbard</Name>
            </ListItem>
        </Partner>
        <MPs>0</MPs>
        <GMPs>0</GMPs>
        <BMPs>0</BMPs>
        <Club>EBU</Club>
        <ClubName>English Bridge Union</ClubName>
        <NGS>
            <ListItem>
                <SOpp>60.51</SOpp>
                <Partner>00987654</Partner>
                <PartnerName>Edith Hubbard</PartnerName>
                <PrevGrade>59.29</PrevGrade>
                <NewGrade>60.29</NewGrade>
                <SessionGrade>71.67</SessionGrade>
                <GradeAdj>6.19</GradeAdj>
                <Boards>24</Boards>
                <Score>56.55</Score>
                <Order></Order>
                <SeqNum>00447104</SeqNum>
                <Format>SWISS_PAIRS</Format>
            </ListItem>
        </NGS>
    </Session>
    <process_time>4.1651s</process_time>
</response>
response
login,member
Session,EBU-003621-0031,EBU-003621,20170101120000,,43,Array,0,0,0,EBU,English Bridge Union,Array
process_time,4.1651s

GET https://www.ebu.co.uk/members/api-3.1/session

Query parameters

Parameter Default Description
from 20100401 The start of the period you want to retrieve in format ‘yyyymmdd’. You can use the special values 'thisyear’ and 'lastyear’ to choose 1st January of the respective year.
to today The end of the period you want to retrieve in format 'yyyymmdd’. You can use the special values 'thisyear’ and 'lastyear’ to choose 31st December of the respective year.

Response

The response comes back as a list of Session objects, each containing the following fields.

Field Description
ID A unique ID for that player’s session of bridge. This will always begin with the SID (below).
SID The ID of the session.
Date The date of the session.
Score What the player scored in the session, if available.
VPScore The Victory Point score, if there is one.
Partner A list of partners. If a team’s event, a list of teammates.
MPs The local masterpoints earned in this session.
BMPs The blue masterpoints earned in this session.
GMPs The green masterpoints earned in this session.
Club The Club’s EBU number.
ClubName The Club’s name.
NGS Information about the NGS for this session. Appears in list form and will contain multiple entries if we played with multiple partners (e.g. in a pivot teams event). See below for detail.
NGS Field Description
SOpp The strength of the opposition.
Partner The EBU number of the partner.
PartnerName The name of the partner.
PrevGrade The grade prior to this session.
NewGrade The grade after this session.
SessionGrade The session grade (see NGS documentation for exactly what this means, but it’s not especially interesting)
GradeAdj How the grade changed as a result of this session. Can be positive or negative.
Boards How many graded boards this partnership played.
Score The score which the NGS used for this partnership.
Order Used when someone has multiple partners to give a unique ID to this partnership. Blank otherwise.
SeqNum The sequence number for when the NGS system processed this session. Can be used to put in order sessions which might not have been submitted in date order.
Format The format of the event.

Get list of a club/county’s sessions

Performing a GET request with club or county credentials will return a list of sessions which that club/county held.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/session

{
    "response": {
        "login": "county",
        "Session": [
            {
                "ID": "EBU-004255",
                "Date": "20170101120000",
                "DateSubmitted": "20170101142142",
                "Description": "Test Event 1",
                "PlayerSessions": "72",
                "Format": "TEAMS",
                "Invoice": "0",
                "MPScale": "EBU",
                "P2PChargeRate": "02",
                "MPUploaded": "0",
                "MPAwarded": "1",
                "NGSReprocessing": "0",
                "NGS": "done",
                "SOF": "58.87",
                "IsIndex": "1",
                "SessionWeight": "1",
                "WinnerType": "1"
            },
        {
                "ID": "EBU-004256",
                "Date": "20170101120000",
                "DateSubmitted": "20170101142142",
                "Description": "Test Event 2",
                "PlayerSessions": "72",
                "Format": "TEAMS",
                "Invoice": "0",
                "MPScale": "EBU",
                "P2PChargeRate": "20",
                "MPUploaded": "0",
                "MPAwarded": "1",
                "NGSReprocessing": "0",
                "NGS": "multiSibling",
                "Index": "EBU-004255",
                "SessionWeight": "1",
                "WinnerType": "1"
            }
        ],
        "process_time": "3.1648s"
    }
}
<response>
    <login>county</login>
    <Session>
        <ID>EBU-004255</ID>
        <Date>20170101120000</Date>
        <DateSubmitted>20170101142142</DateSubmitted>
        <Description>Test Event 1</Description>
        <PlayerSessions>72</PlayerSessions>
        <Format>TEAMS</Format>
        <Invoice>0</Invoice>
        <MPScale>EBU</MPScale>
        <P2PChargeRate>02</P2PChargeRate>
        <MPUploaded>0</MPUploaded>
        <MPAwarded>1</MPAwarded>
        <NGSReprocessing>0</NGSReprocessing>
        <NGS>done</NGS>
        <SOF>58.87</SOF>
        <IsIndex>1</IsIndex>
        <SessionWeight>1</SessionWeight>
        <WinnerType>1</WinnerType>
    </Session>
    <Session>
        <ID>EBU-004256</ID>
        <Date>20170101120000</Date>
        <DateSubmitted>20170101142142</DateSubmitted>
        <Description>Test Event 2</Description>
        <PlayerSessions>72</PlayerSessions>
        <Format>TEAMS</Format>
        <Invoice>0</Invoice>
        <MPScale>EBU</MPScale>
        <P2PChargeRate>99</P2PChargeRate>
        <MPUploaded>0</MPUploaded>
        <MPAwarded>1</MPAwarded>
        <NGSReprocessing>0</NGSReprocessing>
        <NGS>multiSibling</NGS>
        <Index>EBU-004255</Index>
        <SessionWeight>1</SessionWeight>
        <WinnerType>1</WinnerType>
    </Session>
    <process_time>3.1648s</process_time>
</response>
response
login,county
Session,EBU-004255,20170101120000,20170101142142,Test Event 1,72,TEAMS,0,EBU,02,0,1,0,done,58.87,1,1,1
Session,EBU-004256,20170101120000,20170101142142,Test Event 2,72,TEAMS,0,EBU,99,0,1,0,multiSibling,EBU-004255,1,1
process_time,3.1648s

GET https://www.ebu.co.uk/members/api-3.1/session

Query parameters

Parameter Default Description
from 20100401 The start of the period you want to retrieve in format 'yyyymmdd’. You can use the special values 'thisyear’ and 'lastyear’ to choose 1st January of the respective year.
to today The end of the period you want to retrieve in format 'yyyymmdd’. You can use the special values 'thisyear’ and 'lastyear’ to choose 31st December of the respective year.

Response

The response comes back as a list of Session objects, each containing the following fields.

Field Description
ID The ID of the session.
Date The date the session was played.
DateSubmitted The date/time the session was submitted.
Description What the session was named.
PlayerSessions How many people played in the session.
Format What the format of the session was.
Invoice Once an invoice or collection advice has been created for this session, this field will contain a reference to it. Until then, it will take the value '0’. See Statements and invoices in the Club admin section below.
MPScale The masterpoint scale of the session.
P2PChargeRate Now usually called the Universal Membership Subscription Rate, this tells the EBU what kind of an event it was, and therefore what to charge the club/county.
MPUploaded Boolean for whether masterpoints have been processed for this session or not.
MPAwarded Whether the session is eligible for masterpoints. Not really used for anything.
NGSReprocessing Set to '1’ if the session is due to be reprocessed by the NGS system on the next morning. This usually means that the P2PChargeRate has changed, but there could be a few other reasons.
NGS The status of the event. Will say 'done’ if the session was successfully processed by the NGS, or give some other message if not.
SOF The strength of the field, for the NGS.
IsIndex A boolean to say if this is the index session for a multi-session submission.
Index The session ID of the index of this multi-session submission.
SessionWeight How many real life sessions this session represents. Should be set to 2 for events with 36+ boards.
SimPairsID If the session has been submitted to a Sim Pairs event, the ID will be noted here.
WinnerType Whether it was a one- or two-winner movement.

Get session summary for a club/county

This endpoint gets a brief summary of a club or county’s session history.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/session/summary

{
    "response": {
        "login": "county",
        "count": 3221,
        "first": "20101105120000",
        "Session": [
            {
            "Placeholder": "Session 1 data"
            },
            {
            "Placeholder": "Session 2 data"
            },
            {
            "Placeholder": "Session 3 data"
            },
            {
            "Placeholder": "Session 4 data"
            },
            {
            "Placeholder": "Session 5 data"
            }
        ],
        "process_time": "1.4009s"
    }
}
<response>
    <login>county</login>
    <count>3221</count>
    <first>20101105120000</first>
    <Session>
    <Placeholder>Session 1 data</Placeholder>
    </Session>
    <Session>
    <Placeholder>Session 2 data</Placeholder>
    </Session>
    <Session>
    <Placeholder>Session 3 data</Placeholder>
    </Session>
    <Session>
    <Placeholder>Session 4 data</Placeholder>
    </Session>
    <Session>
    <Placeholder>Session 5 data</Placeholder>
    </Session>
    <process_time>1.4009s</process_time>
</response>
response
login,county
count,3221
first,20101105120000
Session,1
Session,2
Session,3
Session,4
Session,5
process_time,1.4009s

GET https://www.ebu.co.uk/members/api-3.1/session/summary

Response

Field Description
count The number of sessions that have been submitted by this club/county
first The date of the earliest session submitted
Session A list of the five most recent sessions that the club/county has played. The format of these is the same as for the GET /session query and has not been duplicated in the example to the right.

Get ranking list for a specific session

This endpoint retrieves the ranking list for a specific session. To get the ID of a session, you need to use one of the above calls.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/session/EBU-004255

{
    "response": {
        "login": "county",
        "Session": [
            {
                "ID": "EBU-004255",
                "Date": "20170101120000",
                "DateSubmitted": "20170101142142",
                "Description": "Test Event 1",
                "PlayerSessions": "72",
                "Format": "TEAMS",
                "Invoice": "0",
                "MPScale": "EBU",
                "P2PChargeRate": "02",
                "MPUploaded": "0",
                "MPAwarded": "1",
                "NGSReprocessing": "0",
                "NGS": "done",
                "SOF": "58.87",
                "IsIndex": "1",
                "SessionWeight": "1",
                "WinnerType": "1"
            }
        ],
        "Player": [
            {
                "ID": "EBU-004255-0001",
                "EBU": "00987654",
                "Partner": "00987653",
                "Place": "6",
                "Name": "Bobby McBob",
                "Score": "58.00",
                "MPs": "0",
                "GMPs": "0",
                "BMPs": "192",
                "Pair": "1",
                "NGS": [
                    {
                        "Adjust": "5.30",
                        "Score": "58.00",
                        "Boards": "24"
                    }
                ]
            },
            {
                etc.
            }
        ],
        "SimsRegistered": [
            {
                "ID": "000001",
                "Description": "Test Sim Pairs"
            }
        ],
        "process_time": "1.2109s"
    }
}
<response>
    <login>county</login>
    <Session>
        <ID>EBU-004255</ID>
        <Date>20170101120000</Date>
        <DateSubmitted>20170101142142</DateSubmitted>
        <Description>Test Event 1</Description>
        <PlayerSessions>72</PlayerSessions>
        <Format>TEAMS</Format>
        <Invoice>0</Invoice>
        <MPScale>EBU</MPScale>
        <P2PChargeRate>02</P2PChargeRate>
        <MPUploaded>0</MPUploaded>
        <MPAwarded>1</MPAwarded>
        <NGSReprocessing>0</NGSReprocessing>
        <NGS>done</NGS>
        <SOF>58.87</SOF>
        <IsIndex>1</IsIndex>
        <SessionWeight>1</SessionWeight>
        <WinnerType>1</WinnerType>
    </Session>
    <Player>
        <ID>EBU-004255-0001</ID>
        <EBU>00987654</EBU>
        <Partner>00987653</Partner>
        <Place>6</Place>
        <Name>Bobby McBob</Name>
        <Score>58.00</Score>
        <MPs>0</MPs>
        <GMPs>0</GMPs>
        <BMPs>192</BMPs>
        <Pair>1</Pair>
        <NGS>
            <ListItem>
                <Adjust>5.30</Adjust>
                <Score>58.00</Score>
                <Boards>24</Boards>
            </ListItem>
        </NGS>
    </Player>
    <Player>
        etc.
    </Player>
    <SimsRegistered>
        <ID>000001</ID>
        <Description>Test Sim Pairs</Description>
    </SimsRegistered>
    <process_time>1.0747s</process_time>
</response>
response
login,county
Session,EBU-004255,20170101120000,20170101142142,Test Event 1,72,TEAMS,0,EBU,02,0,1,0,done,58.87,1,1,1
Player,EBU-004255-0001,00987654,00987653,6,Bobby McBob,58.00,0,0,192,1,Array
Player,etc.
SimsRegistered,000001,Test Sim Pairs
process_time,1.2294s

GET https://www.ebu.co.uk/members/api-3.1/session/{id}

Response

The examples to the right and information below refer to retrieving this data as a club/county. However, the response is very similar if you’re doing this as a member. Members can only access information about sessions in which they participated.

Field Description
Session This field duplicates the information that would be returned by the GET session list. See above for detail. The rest of this table lists the detail of the Player elements.
ID The ranking ID. This will always start with the session ID, followed by a unique reference for this player’s data.
EBU The EBU number of the player.
Partner The EBU number of the player’s partner.
Place The position that the pair/team came.
Name The name of the player.
Score The score of the pair/team.
MPs The local masterpoints earned.
GMPs The green masterpoints earned.
BMPs The blue masterpoints earned.
Pair The pair ID.
NGS A list of NGS adjustments (along with score and number of boards played) by partnership. Will usually contain just one item, but may contain more in the case of a player playing in multiple partnerships. e.g. Pivot teams.
SimsRegistered Lists the sim pairs events that this club is registered for on this day. Note that this does not mean that the session has been entered into the Sim. That information can be found in the Session section.

Get a player’s session history as a club/county

This endpoint lets a club or county retrieve some very basic information about a player’s session history. This can be useful for disambiguating player records with similar names.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/session/player/00987654

{
    "response": {
        "login": "county",
        "Session": [
            {
                "ID": "EBU-004255",
                "Date": "20160819120000",
                "Club": "EBU",
                "ClubName": "English Bridge Union"
            },
            {
                etc.
            }
        ],
        "process_time": "1.2119s"
    }
}
<response>
    <login>county</login>
    <Session>
        <ID>EBU-004255</ID>
        <Date>20160819120000</Date>
        <Club>EBU</Club>
        <ClubName>English Bridge Union</ClubName>
    </Session>
    <Session>
        etc.
    </Session>
    <process_time>1.3376s</process_time>
</response>
response
login,county
Session,EBU-004255,20160819120000,EBU,English Bridge Union
process_time,0.8857s

GET https://www.ebu.co.uk/members/api-3.1/session/player/{ebu}

Query parameters

Parameter Default Description
from 20100401 The start of the period you want to retrieve in format 'yyyymmdd’. You can use the special values 'thisyear’ and 'lastyear’ to choose 1st January of the respective year.
to today The end of the period you want to retrieve in format 'yyyymmdd’. You can use the special values 'thisyear’ and 'lastyear’ to choose 31st December of the respective year.

Response

Returns a list of Session items with the following fields.

Field Description
ID The session ID.
Date The date of the session.
Club The EBU number of the club.
ClubName The name of the club.

Delete a session

This endpoint lets a club or county delete one of their sessions. This can only be done up to the point where the session has been processed for masterpoints, which happens a week into the month after it was submitted (so clubs will always have at least a week to correct any mistakes). After this, they need to contact the EBU for assistance. To check if masterpoints have been issued, retrieve the Session data and look for the MPUploaded value.

HTTP Request

DELETE https://www.ebu.co.uk/members/api-3.1/session/00987654-000001

{
    "response": {
        "login": "club",
        "deleted": "00987654-000001",
        "process_time": "8.6671s"
    }
}
<response>
    <login>club</login>
    <deleted>00987654-000001</deleted>
    <process_time>8.6671s</process_time>
</response>
response
login,club
deleted,00987654-000001
process_time,8.6671s

DELETE https://www.ebu.co.uk/members/api-3.1/session/{id}

Response

Returns a failure message, or deleted if successful. Will usually just return one deleted element, but in the case of a multi-session event, there may be several sub-sessions being deleted.

Field Description
deleted The session ID of the session deleted.

Update a session

This endpoint lets a club or county update a player record on one of their sessions. As with deleting, above, this can only be done up to the point where the session has been processed for masterpoints, which happens a week into the month after it was submitted (so clubs will always have at least a week to correct any mistakes). After this, they need to contact the EBU for assistance. To check if masterpoints have been issued, retrieve the Session data and look for the MPUploaded value.

HTTP Request

POST https://www.ebu.co.uk/members/api-3.1/session/ranking/00987654-000001-0001

{
    "response": {
        "login": "club",
        "success": "Doctor Spaceman",
        "process_time": "2.9236s"
    }
}
<response>
    <login>club</login>
    <success>Doctor Spaceman</success>
    <process_time>2.4958s</process_time>
</response>
response
login,club
success,Doctor Spaceman
process_time,1.7312s

POST https://www.ebu.co.uk/members/api-3.1/session/ranking/{rid}

Query parameters

Parameter Default Description
ebu none The EBU number of the player to change this session to.

Response

Field Description
success The name of the player you’re changing the session to.

NGS information

These procedure calls deal with the EBU’s National Grading Scheme. This documentation isn’t going to explain the details of how it works. For that, please explore https://www.ebu.co.uk/ngs.

Get member’s NGS details

This endpoint retrieves all the information you could need about a person’s current NGS grade. It requires a member’s EBU number and password to use.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/ngs

{
    "response": {
        "login": "member",
        "SumBoards": "0300",
        "Grade": "60.00",
        "GradeBand": "King ",
        "Maturity": "E",
        "Partner": [
        {
                "Data": {
                    "Name": "Billy Bobbin",
                    "Grade": "61.07",
                    "GradeBand": "Ace-C",
                    "Maturity": "E"
                },
                "NewestDateUsed": "20150518120000",
                "OldestDateUsed": "20141117120000",
                "SumBoards": "0300",
                "Maturity": "E",
                "Grade": "60.50",
                "GradeBand": "King "
            }
        ],
        "OldestDateUsed": "20141117120000",
        "chartdata": [
            {
                "x": 1,
                "y": 49.71,
                "toolTipContent": "2010-05-13, grade: 49.71"
            },
            {
                "x": 2,
                "y": 48.74,
                "toolTipContent": "2010-10-25, grade: 48.74"
            },
            {
                "x": 3,
                "y": 49.46,
                "toolTipContent": "2011-12-28, grade: 49.46"
            }
        ],
        "History": [
            {
                "NewGrade": "60.00",
                "Date": "20170601120000",
                "Invalid": "session",
                "Session": "EBU-000001",
                "Adjust": "5.00",
                "SeqNum": "00510000",
                "SumBoards": "0300",
                "NumBoards": "24"
            }
        ],
        "process_time": "1.5801s"
    }
}
<response>
    <login>member</login>
    <SumBoards>0300</SumBoards>
    <Grade>60.00</Grade>
    <GradeBand>King </GradeBand>
    <Maturity>E</Maturity>
    <OldestDateUsed>20141117120000</OldestDateUsed>
    <Partner>
        <Data>
            <Name>Billy Bobbin</Name>
            <Grade>61.07</Grade>
            <GradeBand>Ace-C</GradeBand>
            <Maturity>E</Maturity>
        </Data>
        <NewestDateUsed>20150518120000</NewestDateUsed>
        <OldestDateUsed>20141117120000</OldestDateUsed>
        <SumBoards>0300</SumBoards>
    <Maturity>E</Maturity>
    <Grade>60.50</Grade>
    <GradeBand>King </GradeBand>
    </Partner>
    <chartdata>
        <ListItem>
            <x>1</x>
            <y>49.71</y>
            <toolTipContent>2010-05-13, grade: 49.71</toolTipContent>
        </ListItem>
        <ListItem>
            <x>2</x>
            <y>48.74</y>
            <toolTipContent>2010-10-25, grade: 48.74</toolTipContent>
        </ListItem>
        <ListItem>
            <x>3</x>
            <y>49.46</y>
            <toolTipContent>2011-12-28, grade: 49.46</toolTipContent>
        </ListItem>
    </chartdata>
    <History>
        <NewGrade>60.00</NewGrade>
        <Date>20170601120000</Date>
        <Invalid>session</Invalid>
        <Session>EBU-000001</Session>
        <Adjust>5.00</Adjust>
        <SeqNum>00510000</SeqNum>
        <SumBoards>0300</SumBoards>
        <NumBoards>24</NumBoards>
    </History>
    <process_time>2.2668s</process_time>
</response>
response
login,member
SumBoards,0300
Grade,60.00
GradeBand,King
Maturity,E
OldestDateUsed,20141117120000
Partner,Billy Bobbin,61.07,Ace-C,E,20150518120000,20141117120000,0300,E,65.50,King
chartdata,1,49.71,2010-05-13, grade: 49.71,2,48.74,2010-10-25, grade: 48.74,3,49.46,2011-12-28, grade: 49.46
History,60.00,20170601120000,session,EBU-000001,5.00,00510000,0300,24
process_time,1.7692s

GET https://www.ebu.co.uk/members/api-3.1/ngs

Response

Field Description
SumBoards The number of boards graded by the NGS. This is capped at 2000 and only looks at the last three years, so is not the same as the number of boards they have ever played.
Grade The NGS grade.
GradeBand The grade band of this grade.
Maturity E = evolving (<1000 boards) and M = mature.
Partner A list of partnerships, with data on the partnership grade. The Data field gives data about the partner - their name and individual grade.
OldestDateUsed The date of the oldest session used in the current grade.
chartdata Data which we use to print the graph on the NGS page of My EBU.
History A list of the 20 most recent NGS movements for that player. This is more accurate than looking at the session history and ordering it by NGS sequence number, because it includes information on when a session is deleted, or recalculated. The not-very-usefully-named Invalid field can take the values ‘session’ (this is a normal graded session), 'deleted-session’ (the grade changed when a session was deleted), 'recalculation’ (the grade changed when a session was recalculated) and 'expiry’ (some sessions were removed because they were more than three years old).

Look up a member’s NGS by name

This endpoint lets you search for an NGS record by surname (and, optionally, forename). Only EBU members who have a public NGS grade will appear in the results.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/ngs/search

{
    "response": {
        "player": [
            {
                "Position": 1,
                "Surname": "Bobbin",
                "Forenames": "Malcolm",
                "Grade": "58.52",
                "GradeBand": "Queen",
                "Maturity": "M",
                "Region": "SUR"
            },
            {
                "Position": 2,
                "Surname": "Bobbin",
                "Forenames": "Mary",
                "Grade": "38.08",
                "GradeBand": "Two  ",
                "Maturity": "E",
                "Region": "WIL"
            }
        ],
        "process_time": "0.1858s"
    }
}
<response>
    <player>
        <Position>1</Position>
        <Surname>Bobbin</Surname>
        <Forenames>Malcolm</Forenames>
        <Grade>58.52</Grade>
        <GradeBand>Queen</GradeBand>
        <Maturity>M</Maturity>
        <Region>SUR</Region>
    </player>
    <player>
        <Position>2</Position>
        <Surname>Bobbin</Surname>
        <Forenames>Mary</Forenames>
        <Grade>38.08</Grade>
        <GradeBand>Two  </GradeBand>
        <Maturity>E</Maturity>
        <Region>WIL</Region>
    </player>
    <process_time>0.1858s</process_time>
</response>
response
player,1,Bobbin,Malcolm,58.52,Queen,M,SUR
player,2,Bobbin,Mary,38.08,Two  ,E,WIL
process_time,0.1858s

GET https://www.ebu.co.uk/members/api-3.1/ngs/search

Query parameters

Parameter Default Description
surname none The surname to search for. This needs to be complete, so 'Chan’ will not pick up people called 'Channing’.
forenames none (Optional) The forenames to search for. This does not need to be complete, so both 'Mal’ and ’M’ will pick up people called 'Malcolm’.

Response

Field Description
Position The position in the list. Probably not very useful, unless you want to find out who the best 'Smith’ in England is.
Surname
Forenames
Grade The grade of the player.
GradeBand The grade band of the player.
Maturity How mature (or reliable) the grade is. 'E’ means it is evolving (150-999 boards); ’M’ means it is mature (1000+ boards). Grades with fewer than 150 boards to support them will not appear.
Region The primary county of this player, as a three-letter code.

Look up a member’s NGS by EBU number

This endpoint lets you look up an NGS grade by EBU number. Only members who have a public NGS grade can be retrieved.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/ngs/00987654

{
    "response": {
        "Maturity": "E",
        "Grade": "60.15",
        "GradeBand": "King ",
        "process_time": "2.5880s"
    }
}

{
    "response": {
        "failure": "This member has denied permission to view their grade",
        "process_time": "0.8739s"
    }
}
<response>
    <Maturity>E</Maturity>
    <Grade>60.15</Grade>
    <GradeBand>King </GradeBand>
    <process_time>2.5880s</process_time>
</response>

<response>
    <failure>This member has denied permission to view their grade</failure>
    <process_time>0.8739s</process_time>
</response>
response
Maturity,E
Grade,60.15
GradeBand,King
process_time,2.5880s

response
failure,This member has denied permission to view their grade
process_time,0.8739s

GET https://www.ebu.co.uk/members/api-3.1/ngs/{id}

Response

Responds with a 'failure’ field if the grade information could not be retrieved.

Field Description
Maturity How mature (or reliable) the grade is. 'E’ means it is evolving (150-999 boards); ’M’ means it is mature (1000+ boards). Grades with fewer than 150 boards to support them will not appear.
Grade The grade of the player.
GradeBand The grade band of the player.

Get public NGS ranking list

This endpoint retrieves the public ranking list of all players, starting from the top. You can restrict it by county and grade maturity. It returns results in pages of 50 records.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/ngs/ranking

{
    "response": {
        "player": [
            {
                "Position": 1,
                "Name": "Andrew Robson",
                "Grade": "72.60",
                "GradeBand": "Ace-S",
                "Maturity": "M",
                "Region": "LON"
            },
            {
                "Position": 2,
                "Name": "David Gold",
                "Grade": "70.85",
                "GradeBand": "Ace-S",
                "Maturity": "M",
                "Region": "LON"
            },
        {
            "etc": "..."
        },
            {
                "Position": 49,
                "Name": "Steve Eginton",
                "Grade": "66.58",
                "GradeBand": "Ace-H",
                "Maturity": "M",
                "Region": "BRB"
            },
            {
                "Position": 50,
                "Name": "Martin Jones",
                "Grade": "66.57",
                "GradeBand": "Ace-H",
                "Maturity": "M",
                "Region": "MID"
            }
        ],
        "shown": "all",
        "start": 1,
        "end": 50,
        "process_time": "0.0701s"
    }
}
<response>
    <player>
        <Position>1</Position>
        <Name>Andrew Robson</Name>
        <Grade>72.60</Grade>
        <GradeBand>Ace-S</GradeBand>
        <Maturity>M</Maturity>
        <Region>LON</Region>
    </player>
    <player>
        <Position>2</Position>
        <Name>David Gold</Name>
        <Grade>70.85</Grade>
        <GradeBand>Ace-S</GradeBand>
        <Maturity>M</Maturity>
        <Region>LON</Region>
    </player>

    <etc>...</etc>

    <player>
        <Position>49</Position>
        <Name>Steve Eginton</Name>
        <Grade>66.58</Grade>
        <GradeBand>Ace-H</GradeBand>
        <Maturity>M</Maturity>
        <Region>BRB</Region>
    </player>
    <player>
        <Position>50</Position>
        <Name>Martin Jones</Name>
        <Grade>66.57</Grade>
        <GradeBand>Ace-H</GradeBand>
        <Maturity>M</Maturity>
        <Region>MID</Region>
    </player>
    <shown>all</shown>
    <start>1</start>
    <end>50</end>
    <process_time>0.0701s</process_time>
</response>
response
player,1,Andrew Robson,72.60,Ace-S,M,LON
player,2,David Gold,70.85,Ace-S,M,LON
.
.
.
player,49,Steve Eginton,66.58,Ace-H,M,BRB
player,50,Martin Jones,66.57,Ace-H,M,MID
shown,all
start,1
end,50
process_time,0.0701s

GET https://www.ebu.co.uk/members/api-3.1/ngs/ranking

Query parameters

Parameter Default Description
page 1 Which page we want to retrieve. There are 50 results to a page, so to find the 222nd result, you need to retrieve page 5.
county all The region code of the county to retrieve. e.g. 'SUS’ or 'YOR’. Will only return the records of the people who have primary affiliation to that county.
mature 1 Boolean value. 1 = show only mature grades (1000+ boards); 0 = show mature and evolving grades (150+ boards).

Response

Field Description
Position The ranking of this player (with the current query parameters).
Name The player’s name.
Grade The grade of the player.
GradeBand The grade band of the player.
Maturity How mature (or reliable) the grade is. 'E’ means it is evolving (150-999 boards); ’M’ means it is mature (1000+ boards). Grades with fewer than 150 boards to support them will not appear.
Region The three-character region code of the primary county of the player.

Get public NGS partnership list

This endpoint retrieves the public ranking list of top partnerships. It currently only shows the top 50 pairs, but we hope to extend this at a future time.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/ngs/partnerships

{
    "response": {
        "partnership": [
            {
                "Position": 1,
                "Player": "Gerald Tredinnick",
                "Partner": "Derek Patterson",
                "PlayerRegion": "KEN",
                "PartnerRegion": "KEN",
                "Grade": "68.82",
                "GradeBand": "Ace-S",
                "Maturity": "M"
            },
            {
                "Position": 2,
                "Player": "Nick Sandqvist",
                "Partner": "Tom Townsend",
                "PlayerRegion": "LON",
                "PartnerRegion": "LON",
                "Grade": "68.73",
                "GradeBand": "Ace-S",
                "Maturity": "M"
            },
        {
            "etc": "..."
        },
            {
                "Position": 49,
                "Player": "Rhona Goldenfield",
                "Partner": "Bernard Goldenfield",
                "PlayerRegion": "MAN",
                "PartnerRegion": "MAN",
                "Grade": "63.85",
                "GradeBand": "Ace-D",
                "Maturity": "M"
            },
            {
                "Position": 50,
                "Player": "Shahzaad Natt",
                "Partner": "Nick Sandqvist",
                "PlayerRegion": "LON",
                "PartnerRegion": "LON",
                "Grade": "63.77",
                "GradeBand": "Ace-D",
                "Maturity": "M"
            }
        ],
        "process_time": "0.0566s"
    }
}
<response>
    <partnership>
        <Position>1</Position>
        <Player>Gerald Tredinnick</Player>
        <Partner>Derek Patterson</Partner>
        <PlayerRegion>KEN</PlayerRegion>
        <PartnerRegion>KEN</PartnerRegion>
        <Grade>68.82</Grade>
        <GradeBand>Ace-S</GradeBand>
        <Maturity>M</Maturity>
    </partnership>
    <partnership>
        <Position>2</Position>
        <Player>Nick Sandqvist</Player>
        <Partner>Tom Townsend</Partner>
        <PlayerRegion>LON</PlayerRegion>
        <PartnerRegion>LON</PartnerRegion>
        <Grade>68.73</Grade>
        <GradeBand>Ace-S</GradeBand>
        <Maturity>M</Maturity>
    </partnership>

    <etc>...</etc>

    <partnership>
        <Position>49</Position>
        <Player>Rhona Goldenfield</Player>
        <Partner>Bernard Goldenfield</Partner>
        <PlayerRegion>MAN</PlayerRegion>
        <PartnerRegion>MAN</PartnerRegion>
        <Grade>63.85</Grade>
        <GradeBand>Ace-D</GradeBand>
        <Maturity>M</Maturity>
    </partnership>
    <partnership>
        <Position>50</Position>
        <Player>Shahzaad Natt</Player>
        <Partner>Nick Sandqvist</Partner>
        <PlayerRegion>LON</PlayerRegion>
        <PartnerRegion>LON</PartnerRegion>
        <Grade>63.77</Grade>
        <GradeBand>Ace-D</GradeBand>
        <Maturity>M</Maturity>
    </partnership>
    <process_time>0.0566s</process_time>
</response>
response
partnership,1,Gerald Tredinnick,Derek Patterson,KEN,KEN,68.82,Ace-S,M
partnership,2,Nick Sandqvist,Tom Townsend,LON,LON,68.73,Ace-S,M
.
.
.
partnership,49,Rhona Goldenfield,Bernard Goldenfield,MAN,MAN,63.85,Ace-D,M
partnership,50,Shahzaad Natt,Nick Sandqvist,LON,LON,63.77,Ace-D,M
process_time,0.0566s

GET https://www.ebu.co.uk/members/api-3.1/ngs/partnerships

Query parameters

Parameter Default Description
mature 1 Boolean value. 1 = show only mature partnership grades (1000+ boards together); 0 = show mature and evolving partnership grades (150+ boards).

Response

Field Description
Position The ranking of this partnership (with the current query parameters).
Player Player 1’s name.
Partner Player 2’s name. There is no ordering of the two players, despite using the terms 'Player’ and 'Partner’.
PlayerRegion The three-character region code of the primary county of Player 1.
PartnerRegion The three-character region code of the primary county of Player 2.
Grade The grade of the partnership.
GradeBand The grade band of the partnership.
Maturity How mature (or reliable) the grade is. 'E’ means it is evolving (150-999 boards); ’M’ means it is mature (1000+ boards). Grades with fewer than 150 boards to support them will not appear.

Get session strength of field

This endpoint retrieves the strength of field for a session. This is made available as a simpler (and slightly faster) alternative to GET /session/{id} for services which want to display the strength on a website.

Requires you to authenticate as the club/county of the session you’re querying for.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/ngs/sof/00987654-000001

{
    "response": {
        "login": "club",
        "success": "52.33",
        "process_time": "0.3615s"
    }
}

{
    "response": {
        "login": "club",
        "status": "P2PChargeRateOmitted",
        "failure": "This session has no SOF",
        "process_time": "0.5752s"
    }
}
<response>
    <login>club</login>
    <success>52.33</success>
    <process_time>0.3615s</process_time>
</response>

<response>
    <login>club</login>
    <status>P2PChargeRateOmitted</status>
    <failure>This session has no SOF</failure>
    <process_time>0.5752s</process_time>
</response>
response
login,club
success,52.33
process_time,0.3615s

response
login,county
status,P2PChargeRateOmitted
failure,This session has no SOF
process_time,0.5752s

GET https://www.ebu.co.uk/members/api-3.1/ngs/sof/{id}

Response

Field Description
success If successful, returns this with the strength of field.
failure If unsuccessful, returns a message here, along with the 'status’ field below.

The status of an NGS session can include, but is not limited to, the following values.

Status Description
notPairs Used in the early days of the NGS, when we did not support teams events.
unusual event type This event type is not supported by the NGS. Usually means an individual.
Teams - Unusual Scoring Method The scoring method for the pairwise data is not supported by the NGS.
tooFewOKPairs A session requires a certain proportion of recognised pairs to be graded. Usually means there are too many guests.
tooFewPairs The session is too small to process.
P2PChargeRateOmitted Certain events are not graded based on the UM subscription rate. e.g. supervised play sessions.
badScores The scores are outside of the tolerance for a session to be graded. Usually means there are too many adjusted boards.
SwissMiss Swiss Pairs event without required data to be processed.
teams event - no pairs data A teams event without the pairwise data (usually cross-IMPs) required to grade it.
multiSibling The session is part of a multi-session event and the SOF will appear on the parent session.
pairIdMismatch Multi-session event with mismatched pairs between sessions.

Member information

There are a few other API calls which deal with membership data not covered in the details or ngs endpoints, above.

Get list of magazines

This endpoint retrieves the URLs for the past six editions of English Bridge magazine. This information should only be used by the member accessing it. Never share it with anyone else.

Editions which are more than a year old are publicly available and can be found on our website.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/magazines

{
    "response": {
        "login": "member",
        "Magazines": [
            {
                "month": "August",
                "year": "2017",
                "url": "https://view.pagetiger.com/id"
            },
            {
                "etc": "..."
            }
        ],
        "process_time": "1.5070s"
    }
}
<response>
    <login>member</login>
    <Magazines>
        <month>August</month>
        <year>2017</year>
        <url>https://view.pagetiger.com/id</url>
    </Magazines>

    <etc>...</etc>

    <process_time>1.5070s</process_time>
</response>
response
login,member
Magazines,August,2017,https://view.pagetiger.com/id
etc.
process_time,1.5070s

GET https://www.ebu.co.uk/members/api-3.1/magazines

Response

A list of Magazines elements, with the following data.

Field Description
month The month of the magazine.
year The year of the magazine.
url The URL of the magazine. We host our electronic magazines on the PageTiger service.

Get list of transactions

This endpoint retrieves all the transactions associated with the account. This includes all invoices and credit notes and, for clubs and counties, Universal Membership statements. It does not include receipts, such as credit card payments.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/transactions

{
    "response": {
        "login": "member",
        "Balance": 0,
        "Transactions": [
            {
                "Date": "20170407120000",
                "Text": "Test Online Booking",
                "Total": 19,
                "Paid": 19,
                "Outstanding": 0,
                "ID": 987654,
                "InvoiceNumber": "INV-1234",
                "Type": "invoice"
            },
            {
                "Date": "20170411120000",
                "Text": "Reverse Test Online Booking",
                "Total": -19,
                "Paid": -19,
                "Outstanding": 0,
                "ID": 987655,
                "InvoiceNumber": "CRN-1234",
                "Type": "creditnote"
            }
        ],
        "process_time": "4.4550s"
    }
}
<response>
    <login>member</login>
    <Balance>0</Balance>
    <Transactions>
        <Date>20170407120000</Date>
        <Text>Test Online Booking</Text>
        <Total>19</Total>
        <Paid>19</Paid>
        <Outstanding>0</Outstanding>
        <ID>987654</ID>
        <InvoiceNumber>INV-1234</InvoiceNumber>
        <Type>invoice</Type>
    </Transactions>
    <Transactions>
        <Date>20170411120000</Date>
        <Text>Reverse Test Online Booking</Text>
        <Total>-19</Total>
        <Paid>-19</Paid>
        <Outstanding>0</Outstanding>
        <ID>987655</ID>
        <InvoiceNumber>CRN-1234</InvoiceNumber>
        <Type>creditnote</Type>
    </Transactions>
    <process_time>4.4550s</process_time>
</response>
response
login,member
Balance,0
Transactions,20170407120000,Test Online Booking,19,19,0,987654,INV-1234,invoice
Transactions,20170411120000,Reverse Test Online Booking,-19,-19,0,987655,CRN-1234,creditnote
process_time,4.4550s

GET https://www.ebu.co.uk/members/api-3.1/transactions

Response

Returns a list of Transactions elements, containing the following data.

Also returns a Balance element which contains the current account balance (a positive number means the member owes the EBU money; a negative number means the member is in credit). Balances do not include shop transactions.

Field Description
Date The date of the transaction.
Text A description of the transaction.
Total The amount of the transaction. Will be negative for a credit note.
Paid The amount that has been paid/allocated so far.
Outstanding The amount that has not been paid/allocated so far.
ID An internal ID for EBU use. Won’t be of any use to anyone else.
InvoiceNumber The invoice or credit note number. Will start either INV- or CRN-. This can be used to retrieve a PDF of the invoice (see below).
Type ‘invoice’ or 'creditnote’, depending on what it is.

Retrieving a PDF invoice/credit note

To get a PDF version of the invoice or credit note, you can use this URL:

https://www.ebu.co.uk/members/utilities/invoice.php?inum=CRN-1234&user={uid}&token={token}

This requires an authentication token that you need to generate through the login endpoint, above, and the invoice/credit note number. Naturally, you can only access a document that was issued to your account.

Get masterpoints data

This endpoint retrieves masterpoint information for a member. It lists every batch that has been awarded to the member, as well as overall totals.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/masterpoints

{
    "response": {
        "login": "member",
        "Lines": [
            {
                "Description": "EBU Summer Meeting",
                "EventID": "6",
                "MPYear": "2016",
                "LocalPoints": "0",
                "BluePoints": "0",
                "GreenPoints": "540",
                "GoldPoints": "540",
                "NetPoints": "0",
                "CreatedDate": "2016-09-09",
                "Comments": "EBU Summer Meeting - Harold Poster"
            },
            {
                "etc": "..."
            },
            {
                "Description": "North East Direct Credit",
                "EventID": "33",
                "MPYear": "2001",
                "LocalPoints": "48",
                "BluePoints": "0",
                "GreenPoints": "0",
                "GoldPoints": "0",
                "NetPoints": "0",
                "CreatedDate": "2001-06-28",
                "Comments": ""
            }
        ],
        "Totals": {
            "Description": "Premier National Master",
            "Comments": "Total Points: 42039  (Local: 19025, Blue: 0, Green: 21898, Net: 1116, Gold: 0.86)",
            "Locals": "19025",
            "Blues": "0",
            "Greens": "21898",
            "Nets": "1116",
            "Total": "42039",
            "Golds": "0.86",
            "RankCode": "4000"
        },
        "process_time": "0.0679s"
    }
}
<response>
    <login>member</login>
    <Lines>
        <Description>EBU Summer Meeting</Description>
        <EventID>6</EventID>
        <MPYear>2016</MPYear>
        <LocalPoints>0</LocalPoints>
        <BluePoints>0</BluePoints>
        <GreenPoints>540</GreenPoints>
        <GoldPoints>540</GoldPoints>
        <NetPoints>0</NetPoints>
        <CreatedDate>2016-09-09</CreatedDate>
        <Comments>EBU Summer Meeting - Harold Poster</Comments>
    </Lines>

    <etc>...</etc>

    <Lines>
        <Description>North East Direct Credit</Description>
        <EventID>33</EventID>
        <MPYear>2001</MPYear>
        <LocalPoints>48</LocalPoints>
        <BluePoints>0</BluePoints>
        <GreenPoints>0</GreenPoints>
        <GoldPoints>0</GoldPoints>
        <NetPoints>0</NetPoints>
        <CreatedDate>2001-06-28</CreatedDate>
        <Comments></Comments>
    </Lines>
    <Totals>
        <Description>Premier National Master</Description>
        <Comments>Total Points: 42039  (Local: 19025, Blue: 0, Green: 21898, Net: 1116, Gold: 0.86)</Comments>
        <Locals>19025</Locals>
        <Blues>0</Blues>
        <Greens>21898</Greens>
        <Nets>1116</Nets>
        <Total>42039</Total>
        <Golds>0.86</Golds>
        <RankCode>4000</RankCode>
    </Totals>
    <process_time>0.0679s</process_time>
</response>
response
login,member
Lines,EBU Summer Meeting,6,2016,0,0,540,540,0,2016-09-09,EBU Summer Meeting - Harold Poster
.
.
.
Lines,North East Direct Credit,33,2001,48,0,0,0,0,2001-06-28,
Totals,Premier National Master,Total Points: 42039  (Local: 19025, Blue: 0, Green: 21898, Net: 1116, Gold: 0.86),19025,0,21898,1116,42039,0.86,4000
process_time,0.1482s

GET https://www.ebu.co.uk/members/api-3.1/masterpoints

Response

A series of Lines elements, with the following fields:

Field Description
Description A description of the event that this award was entered as. These can be quite generic in the case of club and county direct uploads (see Comments, below).
EventID A numeric ID for the event. Should usually match the Description above.
MPYear The year of this award.
LocalPoints The local (black) points that were won in this award.
BluePoints The blue points that were won in this award. Note that for blue and green points, awards are expressed on the same scale as local points. So winning 0.25 green points for a Swiss match will be shown as '25’.
GreenPoints The green points that were won in this award.
GoldPoints The gold point-eligible green points that were awarded. This is not the same as the gold points, but can be used to calculate them. For example, winning 1.5 Gold Points in an event will be shown as '750’.
NetPoints The net points that were won in this award. These are now no longer issued, but are still shown for interest. They may be removed at some future date.
CreatedDate The date that the award was created.
Comments Some additional text about the award’s batch. This can be more specific than Description, above, especially in the case of monthly awards processed by the UM system.

Plus a Totals element, with the following fields:

Field Description
Description A description of the masterpoint rank.
Comments Some text that can be printed to show the member’s masterpoint totals.
Locals The total number of local points.
Blues The total number of blue points (normalised to the same scale as local points - see above).
Greens The total number of green points (ditto).
Nets The total number of net points.
Total The total number of masterpoints. Caution: this might not always be the sum of locals + blues + greens + nets.
Golds The current gold point total, as of today. Gold points depreciate every year, so this total might change even if the member does not play.
RankCode A numerical version of the masterpoint rank. The lower the number, the higher the rank.

Change password

This endpoint allows a member, club or county to change their password. The old password must be supplied for this to work - a token is not good enough on its own. If the login is done with a token, that token will remain intact. All other authentication tokens will be expired, so you can’t remain logged in on another computer.

HTTP Request

POST https://www.ebu.co.uk/members/api-3.1/password

{
    "response": {
        "login": "member",
        "success": "Password changed",
        "process_time": "0.2759s"
    }
}
<response>
    <login>member</login>
    <success>Password changed</success>
    <process_time>0.2759s</process_time>
</response>
response
login,member
success,Password changed
process_time,0.2759s

POST https://www.ebu.co.uk/members/api-3.1/password

Query parameters

Parameter Default Description
old none The old password. This needs to be the actual password. You cannot use a token to change a password.
new none The new password.

Response

Field Description
success If successful.
failure If not.

Get resources

This endpoint retrieves the URLs of some EBU resources if the account has permission to access them. This currently means the EBUScore software and Club Membership Handbooks for clubs and counties; and EBUScore and the Teachers Zone for members. This information should only be used by the account accessing it. Never share it with anyone else.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/resources

{
    "response": {
        "login": "member",
        "TeachersZone": "url",
        "EBUScore": {
            "Folder": "folder path",
            "PairsScorer": "file name",
            "TeamsScorer": "file name",
            "SwissTeamsScorer": "file name",
            "SwissPairsScorer": "file name",
            "IndividualScorer": "file name"
        },
        "process_time": "2.5959s"
    }
}

{
    "response": {
        "login": "club",
        "CMHURL": "http://www.ebu.co.uk/url",
        "EBUScore": {
            "Folder": "folder path",
            "PairsScorer": "file name",
            "TeamsScorer": "file name",
            "SwissTeamsScorer": "file name",
            "SwissPairsScorer": "file name",
            "IndividualScorer": "file name"
        },
        "process_time": "2.5959s"
    }
}
<response>
    <login>member</login>
    <TeachersZone>url</TeachersZone>
    <EBUScore>
        <Folder>folder path</Folder>
        <PairsScorer>file name</PairsScorer>
        <TeamsScorer>file name</TeamsScorer>
        <SwissTeamsScorer>file name</SwissTeamsScorer>
        <SwissPairsScorer>file name</SwissPairsScorer>
        <IndividualScorer>file name</IndividualScorer>
    </EBUScore>
    <process_time>2.5949s</process_time>
</response>

<response>
    <login>club</login>
    <CMHURL>http://www.ebu.co.uk/url</CMHURL>
    <EBUScore>
        <Folder>folder path</Folder>
        <PairsScorer>file name</PairsScorer>
        <TeamsScorer>file name</TeamsScorer>
        <SwissTeamsScorer>file name</SwissTeamsScorer>
        <SwissPairsScorer>file name</SwissPairsScorer>
        <IndividualScorer>file name</IndividualScorer>
    </EBUScore>
    <process_time>2.5959s</process_time>
</response>
response
login,member
TeachersZone,url
EBUScore,folder path,file name,file name,file name,file name,file name
process_time,2.5959s

response
login,club
CMHURL,http://www.ebu.co.uk/url
EBUScore,folder path,file name,file name,file name,file name,file name
process_time,2.5959s

GET https://www.ebu.co.uk/members/api-3.1/resources

Response

Field Description
TeachersZone The location of the teachers zone (only available to registered teachers). This can be found on the EBED website, so for example if the value is 'zone1234’ then you need to direct the user to 'http://www.ebedcio.org.uk/zone1234’.
CMHURL The full path of the Club Management Handbook (only available to registered clubs).
EBUScore Information about how to download the EBUScore scoring program.
Folder The path of the folder. e.g. if the value is ’/documents/ebuscore/1234’ then you can find the below files in http://www.ebu.co.uk/documents/ebuscore/1234/’. This value changes periodically.
PairsScorer The file name of the PairsScorer program. Append this to the folder path above to download it.
TeamsScorer The file name of the TeamsScorer program.
SwissTeamsScorer The file name of the SwissTeamsScorer program.
SwissPairsScorer The file name of the SwissPairsScorer program.
IndividualScorer The file name of the IndividualScorer program.

Club admin

A series of endpoints for club administration, mostly involving dealing with club members.

Verify a member

A simple endpoint which verifies if a given EBU number matches a given surname. Used in multiple places on the EBU website to verify that an EBU number being submitted has not been mis-typed.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/members/00987654/verify

{
    "response": {
        "login": "club",
        "success": "EBU# exists",
        "forenames": "Billy",
        "surname": "Shears",
        "process_time": "0.8747s"
    }
}
<response>
    <login>club</login>
    <success>EBU# exists</success>
    <forenames>Billy</forenames>
    <surname>Shears</surname>
    <process_time>0.8747s</process_time>
</response>
response
login,club
success,EBU# exists
forenames,Billy
surname,Shears
process_time,0.8747s

GET https://www.ebu.co.uk/members/api-3.1/members/{id}/verify

Query parameters

Parameter Default Description
surname none The surname of the person you are checking. Has to be complete: ‘Smith’ will not match with 'Smithson’ or 'Smith-Peters’.

Response

Returns success if the check passed, failure otherwise. If it passed, it also returns:

Field Description
forenames The forenames of the person we’re checking.
surname Their surname. Normally will be the same as the one you’re checking, but this confirms the capitalisation we have on our database.

List club members

This endpoint retrieves a list of all the members of the club, with some basic data (including NGS grade) included.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/members

{
    "response": {
        "login": "club",
        "Members": [
            {
                "Surname": "Billy",
                "Forenames": "Shears",
                "EBU": "00987654",
                "Anonymous": 0,
                "Roles": [
                    "scorer",
                    "member"
                ],
                "Grade": "60.05",
                "GradeBand": "King",
                "Maturity": "E"
            }
        ],
        "process_time": "1.3661s"
    }
}
<response>
    <login>club</login>
    <Members>
        <Surname>Billy</Surname>
        <Forenames>Shears</Forenames>
        <EBU>00987654</EBU>
        <Anonymous>0</Anonymous>
        <Roles>
            <ListItem>scorer</ListItem>
            <ListItem>member</ListItem>
        </Roles>
        <Grade>60.05</Grade>
        <GradeBand>King</GradeBand>
        <Maturity>E</Maturity>
    </Members>
    <process_time>1.3661s</process_time>
</response>
response
login,club
Members,Shears,Billy,00987654,0,scorer,member,60.05,King,E
process_time,1.3661s

GET https://www.ebu.co.uk/members/api-3.1/members

Response

A list of Members elements, each containing the following data:

Field Description
Surname The surname of the member.
Forenames The forenames of the member.
EBU The EBU number of the member.
Anonymous A boolean value for whether they have chosen to be anonymous to the EBU.
Roles A list of roles that the member has at the club. Currently just limited to 'member’ and 'scorer’, but we may use this field to allow clubs to assign chairmen and secretaries and other roles through My EBU.
Grade The NGS grade of the member, if they have one, and if they have permitted it to be published.
GradeBand The grade band of the member.
Maturity The maturity of the NGS grade. ’M’ means 1000+ graded boards played, 'E’ means 150-999. Those who have played fewer than 150 boards will not have a public grade.

Get member data

This endpoint retrieves data about a member. The extent of the data that gets returns depends on the member’s permission settings for that club.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/members/00987654

{
    "response": {
        "login": "club",
        "EBU": "00987654",
        "Permission": "00",
        "Scorer": "1",
        "Grade": "60.05",
        "GradeBand": "King",
        "GradeMaturity": "E",
        "MPRank": "Premier National Master",
        "Surname": "Billy",
        "Forenames": "Shears",
        "RegionCode": "OXF",
        "RegionName": "Oxfordshire",
        "Town": "Aylesbury",
        "Anonymous": "0",
        "Partial_Postcode": "HP19",
        "Warning": "You do not have permission to view this member's full details",
        "process_time": "3.0091s"
    }
}

{
    "response": {
        "login": "club",
        "EBU": "00987655",
        "Permission": "11",
        "Scorer": "0",
        "MPRank": "Life Master",
        "Surname": "Willy",
        "Forenames": "Shears",
        "RegionCode": "DIU",
        "RegionName": "Direct UK",
        "Town": "Myton",
        "Anonymous": "0",
        "Address": "123 Some Road",
        "AppearInMagazine": "1",
        "Country": "UK",
        "County": "Countyshire",
        "DOB": "",
        "Email": "email@ebu.co.uk",
        "Initials": "WS",
        "MagazinePreference": "All Editions, No Diary",
        "NGSPreference": "Public Grade and Partnerships",
        "Postcode": "CC1 1AB",
        "ReceiveMassEmails": "1",
        "ReceiveOtherMailings": "0",
        "Tel1": "01296 987654",
        "Tel2": "01296 987655",
        "Title": "Mr",
        "process_time": "3.0091s"
    }
}
<response>
    <login>club</login>
    <EBU>00987654</EBU>
    <Permission>00</Permission>
    <Scorer>1</Scorer>
    <Grade>60.05</Grade>
    <GradeBand>King</GradeBand>
    <GradeMaturity>E</GradeMaturity>
    <MPRank>Premier National Master</MPRank>
    <Surname>Shears</Surname>
    <Forenames>Billy</Forenames>
    <RegionCode>OXF</RegionCode>
    <RegionName>Oxfordshire</RegionName>
    <Town>Aylesbury</Town>
    <Anonymous>0</Anonymous>
    <Partial_Postcode>HP19</Partial_Postcode>
    <Warning>You do not have permission to view this member's full details</Warning>
    <process_time>3.0091s</process_time>
</response>

<response>
    <login>club</login>
    <EBU>00987655</EBU>
    <Permission>11</Permission>
    <Scorer>0</Scorer>
    <MPRank>Life Master</MPRank>
    <Surname>Shears</Surname>
    <Forenames>Willy</Forenames>
    <RegionCode>DIU</RegionCode>
    <RegionName>Direct UK</RegionName>
    <Town>Myton</Town>
    <Anonymous>0</Anonymous>
    <Address>123 Some Road</Address>
    <AppearInMagazine>1</AppearInMagazine>
    <Country>UK</Country>
    <County>Countyshire</County>
    <DOB></DOB>
    <Email>email@ebu.co.uk</Email>
    <Initials>WS</Initials>
    <MagazinePreference>All Editions, No Diary</MagazinePreference>
    <NGSPreference>Public Grade and Partnerships</NGSPreference>
    <Postcode>CC1 1AB</Postcode>
    <ReceiveMassEmails>1</ReceiveMassEmails>
    <ReceiveOtherMailings>0</ReceiveOtherMailings>
    <Tel1>01296 987654</Tel1>
    <Tel2>01296 987655</Tel2>
    <Title>Mr</Title>
    <process_time>3.0091s</process_time>
</response>
response
login,club
EBU,00987654
Permission,00
Scorer,1
Grade,60.05
GradeBand,King
GradeMaturity,E
MPRank,Premier National Master
Surname,Shears
Forenames,Billy
RegionCode,OXF
RegionName,Oxfordshire
Town,Aylesbury
Anonymous,0
Partial_Postcode,HP19
Warning,You do not have permission to view this member's full details
process_time,3.0091s

response
login,club
EBU,00987655
Permission,11
Scorer,0
MPRank,
Surname,Shears
Forenames,Willy
RegionCode,DIU
RegionName,Direct UK
Town,Myton
Anonymous,0
Address,123 Some Road
AppearInMagazine,1
Country,UK
County,Countyshire
DOB,
Email,email@ebu.co.uk
Initials,WS
MagazinePreference,All Editions, No Diary
NGSPreference,Public Grade and Partnerships
Postcode,CC1 1AB
ReceiveMassEmails,1
Tel1,01296 987654
Tel2,01296 987655
Title,Mr
process_time,3.0091s

GET https://www.ebu.co.uk/members/api-3.1/members/{id}

Response

The fields here should mostly mirror the ones listed above in the Get member details section, and will not be repeated here. There are some additional ones, though.

Field Description
Permission A two-bit field containing the read and write permission that the club has over the member’s record, in that order. The left bit set to 1 means that the club has access to the member’s full details. The right bit set to 1 means that the club can edit the member’s details on their behalf.
Scorer A boolean value for whether this member is a scorer at the club.
Partial_Postcode In the case of members who have not given permission to view their details, this will show the first part of the postcode, to help with localising this member (and checking you have the right person). e.g. For the EBU office this will simply show 'HP19’.

Check EBU number

This endpoint retrieves just the name of an EBU member. It is intended to be a faster version of the GET /members/{id} call, above.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/members/00987654/check

{
    "response": {
        "login": "club",
        "Surname": "Billy",
        "Forenames": "Shears",
        "process_time": "0.6640s"
    }
}
<response>
    <login>club</login>
    <Surname>Shears</Surname>
    <Forenames>Billy</Forenames>
    <process_time>0.6640s</process_time>
</response>
response
login,club
Surname,Shears
Forenames,Billy
process_time,0.6640s

GET https://www.ebu.co.uk/members/api-3.1/{id}/check

Response

Field Description
Surname The member’s surname.
Forenames The member’s forenames.

Update member data

This endpoint writes data about a member. The club needs to have write permission in order to do this. This permission is assumed for members that the club created directly, but otherwise it must be set by the member through their own My EBU.

This procedure call expects a JSON string to be sent in the data URL parameter. This should be in the same format as the GET members/{id} call, above.

Also see Record details/Update member details above for some additional notes.

HTTP Request

POST https://www.ebu.co.uk/members/api-3.1/members/00987654

{
    "response": {
        "login": "club",
        "Amending": [
            "Field Tel1 amended to 01296 317200"
        ],
        "success": "Member updated",
        "process_time": "2.8970s"
    }
}

{
    "response": {
        "login": "club",
        "Amending": [],
        "failure": "You do not have permission to amend this record",
        "process_time": "2.2735s"
    }
}
<response>
    <login>club</login>
    <Amending>Field Tel1 amended to 01296 317200</Amending>
    <success>Member updated</success>
    <process_time>2.8970s</process_time>
</response>

<response>
    <login>club</login>
    <failure>You do not have permission to amend this record</failure>
    <process_time>2.2735s</process_time>
</response>
response
login,club
Amending,Field Tel1 amended to 01296 317200
success,Member updated
process_time,2.8970s

response
login,club
failure,You do not have permission to amend this record
process_time,2.2735s

POST https://www.ebu.co.uk/members/api-3.1/members/{id}

Query parameters

Parameter Default Description
data none JSON string of the changes that are being made, using the same field names as are returned by the corresponding GET call. You can leave fields out without worrying about those fields being erased, so you only need to submit the ones that are changing.

Response

Returns success or failure depending on if it works.

Field Description
Amending A list of changes that were actioned. Useful to check against to make sure you got the field names correct.

Create new player record

This endpoint lets a club create a new member record. Clubs are advised to be cautious about doing this, and should take every effort to ensure that they are not creating a duplicate record for someone already on the system.

HTTP Request

POST https://www.ebu.co.uk/members/api-3.1/members/create

{
    "response": {
        "login": "club",
        "EBU": "00987654",
        "Permission": "00",
        "Surname": "Brown",
        "Forenames": "Jackson",
        "RegionName": "Yorkshire",
        "Anonymous": "0",
        "AppearInMagazine": "1",
        "DOB": " 2 Jan 2001",
        "MagazinePreference": "All Editions + Diary",
        "NGSPreference": "Public Grade and Partnerships",
        "ReceiveMassEmails": "1",
        "ReceiveOtherMailings": "0",
        "process_time": "2.8207s"
    }
}
<response>
    <login>club</login>
    <EBU>00987654</EBU>
    <Permission>00</Permission>
    <Surname>Brown</Surname>
    <Forenames>Jackson</Forenames>
    <RegionName>Yorkshire</RegionName>
    <Anonymous>0</Anonymous>
    <AppearInMagazine>1</AppearInMagazine>
    <DOB> 2 Jan 2001</DOB>
    <MagazinePreference>All Editions + Diary</MagazinePreference>
    <NGSPreference>Public Grade and Partnerships</NGSPreference>
    <ReceiveMassEmails>1</ReceiveMassEmails>
    <process_time>2.8207s</process_time>
</response>
response
login,club
EBU,00987654
Permission,00
Surname,Brown
Forenames,Jackson
RegionName,Yorkshire
Anonymous,0
AppearInMagazine,1
DOB, 2 Jan 2001
MagazinePreference,All Editions + Diary
NGSPreference,Public Grade and Partnerships
ReceiveMassEmails,1
process_time,2.8207s

GET https://www.ebu.co.uk/members/api-3.1/members/create

Query parameters

Parameter Default Description
forenames none The forenames of the new player (required)
surname none The surname of the new player (required)
member 0 Whether this player is a member of the club or not. It’s important to set this to '1’ if they are indeed a member. Otherwise you will not have permission to amend them further and they will just be a generic 'Contact’.
dob none The date of birth of the new player, in the format yyyy-mm-dd. This is a field that cannot be amended through POST /members/{id}, so needs to be set now if at all. Members can always set their date of birth by contacting the EBU office, though. A date of birth is required for juniors.

Response

Most of the response data just echoes back the information you supplied, or tells you what the default settings are. However, you will want to note the EBU number.

Field Description
EBU The new EBU number of the member.
Permission The permission bytes. Will be either '11’ if you made them a member of your club (giving you read/write privileges over their account) or '00’ if you didn’t (giving you no privileges).
Surname The surname you supplied.
Forenames The forenames you supplied
RegionName The primary county of the new record. Will take on whatever county the club is affiliated to. If this is not correct, the member can change this by contacting the EBU office.
Anonymous Will always be 0 (false). If the member wishes to be anonymous, you can set this by editing the new record (if you have permission).
AppearInMagazine Will always be 1 (true). If the member wishes to hide themselves from masterpoint promotion lists in the magazine, you can set this by editing the new record.
DOB The data of birth you supplied. If you made a mistake, the member can correct this by contacting the EBU office.
MagazinePreference Will always be 'All Editions + Diary’. You can change this, and the fields below, by editing the new record.
NGSPreference Will always be 'Public Grade and Partnerships’.
ReceiveMassEmails Will always be 1 (true).

Join a member to the club

This endpoint joins up a new member to the club. They must have an EBU record already to do this. If they don’t, use the POST /members/create endpoint, above.

HTTP Request

POST https://www.ebu.co.uk/members/api-3.1/members/00987654/add

{
    "response": {
        "login": "club",
        "success": "Member added to club",
        "process_time": "4.9226s"
    }
}
<response>
    <login>club</login>
    <success>Member added to club</success>
    <process_time>4.9226s</process_time>
</response>
response
login,club
success,Member added to club
process_time,4.9226s

POST https://www.ebu.co.uk/members/api-3.1/members/{id}/add

Response

Simply returns a success or failure message.

Unjoin a member from the club

This endpoint removes a member from the club. Note that if this member is not a member anywhere else, and has not joined the EBU directly, this will remove them as a member of the EBU too.

HTTP Request

DELETE https://www.ebu.co.uk/members/api-3.1/members/00987654

{
    "response": {
        "login": "club",
        "success": "Member removed",
        "process_time": "4.1548s"
    }
}
<response>
    <login>club</login>
    <success>Member removed</success>
    <process_time>3.0630s</process_time>
</response>
response
login,club
success,Member removed
process_time,3.9355s

DELETE https://www.ebu.co.uk/members/api-3.1/members/{id}

Response

Simply returns a success or failure message.

Statements and invoices

This is covered in GET /transactions under Member Information above. The procedure call works the same way for members as it does for clubs/counties.

Get resources

This is covered in GET /resources under Member Information above. The procedure call works the same way for members as it does for clubs/counties, although of course there are slightly different resources available.

Search for members

This endpoint lets you search for EBU records by name and is used when you don’t have the EBU number. Users need to be cautious here, as the amount of information returned is necessarily limited, so it is not always possible to tell if the person you’re looking for is indeed the person that is returned. You can be pretty safe in assuming that there is only one Percival Hyde-Wilson living in Ipswich, but you can’t be as sure about a John Brown living in London.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/members/surname/nameson

{
    "response": {
        "login": "club",
        "Records": [
            {
                "Surname": "Nameson",
                "Forenames": "Donald",
                "EBU": "00987654",
                "Town": "Aylesbury"
            }
        ],
        "process_time": "1.2189s"
    }
}
<response>
    <login>club</login>
    <Records>
        <Surname>Nameson</Surname>
        <Forenames>Donald</Forenames>
        <EBU>00987654</EBU>
        <Town>Aylesbury</Town>
    </Records>
    <process_time>1.2189s</process_time>
</response>
response
login,club
Records,Nameson,Donald,00987654,Aylesbury
process_time,1.2189s

GET https://www.ebu.co.uk/members/api-3.1/members/surname/{surname}

Query parameters

Parameter Default Description
forenames none Optional parameter to restrict results to people with this forename. The surname must be complete ('Smith’ will not return people called 'Smithson’), but forenames can be partial ('P’ and 'Pete’ will return people called 'Peter’).

Response

Returns a Records object with a list of results, each with the following fields.

Field Description
Surname The surname, as held on our database.
Forenames The forenames, as held on our database.
EBU The record’s EBU number.
Town The town of the member. Used to localise searches.

Get member promotions

This endpoint retrieves a list of the masterpoint promotions that the club membership has earned over the past year. Of course, “club membership” here means current members. If someone was promoted six months ago and then resigned from the club they will not appear in the report. And someone who was promoted six months ago when they were not a club member, but have joined since, will appear in the report.

Note: this procedure can be pretty slow for large clubs.

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/promotions

{
    "response": {
        "login": "club",
        "Members": [
            {
                "EBU": "00987654",
                "Name": "Tony Goldblum",
                "Promotions": [
                    {
                        "Date": "2016-09-01",
                        "From": "Unranked",
                        "To": "Local Master"
                    }
                ]
            },
            {
                "EBU": "00987655",
                "Name": "Jeff Goldblum",
                "Promotions": [
                    {
                        "Date": "2016-12-01",
                        "From": "3 Star Premier Tournament Master",
                        "To": "4 Star Premier Tournament Master"
                    }
                ]
            }
    ],
    "process_time": "2.3973s"
    }
}
<response>
    <login>club</login>
    <Members>
        <EBU>00987654</EBU>
        <Name>Tony Goldblum</Name>
        <Promotions>
            <ListItem>
                <Date>2016-09-01</Date>
                <From>Unranked</From>
                <To>Local Master</To>
            </ListItem>
        </Promotions>
    </Members>
    <Members>
        <EBU>00987655</EBU>
        <Name>Jeff Goldblum</Name>
        <Promotions>
            <ListItem>
                <Date>2016-12-01</Date>
                <From>3 Star Premier Tournament Master</From>
                <To>4 Star Premier Tournament Master</To>
            </ListItem>
        </Promotions>
    </Members>
    <process_time>2.3973s</process_time>
</response>
response
login,club
Members,00987654,Tony Goldblum,Array
Members,00987655,Jeff Goldblum,Array
process_time,2.3973s

(this one leaves out the key information, so is fairly useless)

GET https://www.ebu.co.uk/members/api-3.1/promotions

Response

Returns a list of Members objects, each containing:

Field Description
EBU The EBU number of the member.
Name The name of the member.
Promotions A list of promotions earned in the past year (there can of course be more than one), with the date and the rank information. We calculate promotions once a month, so the date will always be the 1st of the month.

Reports

These endpoints run some reports that club administrators may find useful for managing their membership lists. Examples are omitted here, but they all return lists of members, with various data fields.

Members who haven’t played in a while

GET https://www.ebu.co.uk/members/api-3.1/members/lastdate

This report returns a list of members who have not played at this club in the past 12 months. This can be useful for weeding out members who should have lapsed.

Returns a list of Members, with the following fields:

Field Description
EBU The EBU number of the member.
Name The name of the member.
LastDatePlayed The last date that the member played at the club, or 'Never’ if they never have.

Non-members who are playing at the club

GET https://www.ebu.co.uk/members/api-3.1/non-member-players

This report returns a list of people who have played at the club in the past 12 months and who are not members of the club. This can be useful for identifying people who should be members.

Returns a list of Members, with the following fields:

Field Description
EBU The EBU number of the member.
Name The name of the member.
Sessions Number of sessions played at the club in the past year.

Guests who are playing at the club

GET https://www.ebu.co.uk/members/api-3.1/members/lastdate

This report returns a list of all the people who have played at the club in the past year who were not given an EBU number (they were 'guests’). People who appear multiple times on this report are very likely to be mistakes.

Returns a list of Guests, with the following fields:

Field Description
Date The date that this guest played.
Session The session ID in which they played.
Name The name assigned to them.

Contacts created but who have not joined

GET https://www.ebu.co.uk/members/api-3.1/contacts

This report lists the contacts which the club has created, but who are not currently members. This can be useful to track down people who have been created, since they (obviously) don’t appear in the membership list and if they have a common name it may not be easy to find them by normal search.

Returns a list of Contacts, with the following fields:

Field Description
EBU The EBU number of the contact.
DateCreated The date that we created this contact.
Surname The surname of the contact.
Forenames The forenames of the contact.

Submitting sessions

This section describes how to submit a session file to the EBU systems. The process can be a little unwieldy, so if you’re developing an integration it would definitely be a good idea to contact Michael Clark for assistance. He can give you access to a test account, and will be able to check your submissions more thoroughly than you are able.

Submission Workflow

<form enctype="multipart/form-data" 
      action="https://www.ebu.co.uk/members/api/p2p/parse-usebio-1.1.php" 
      method="POST">
  Upload P2P File: <input id="file" name="myfile" type="file"/>
  <input type="submit" name="validate_upload" value="Upload"/>
</form>

The general workflow for submitting a session is as follows:

  1. Produce the USEBIO file. How to do that is beyond the scope of this document. See http://www.usebio.org for more details.
  2. Submit the USEBIO file to the EBU’s parser at https://www.ebu.co.uk/members/api/p2p/parse-usebio-1.1.php. The file parameter name needs to be myfile. This returns a JSON object with all the session data that you need.
  3. If the JSON object shows errors, deal with them.
  4. It’s a good idea to send a request to GET /session-date/{date} to check if we’ve submitted this session before, and to check if we should also be submitting this session to a Sim Pairs event.
  5. Extract all the players from the JSON object and gather them into an array. Pass this to the POST /submission/check-players procedure.
  6. When this request returns, deal with any mismatches and bad EBU numbers. These will cause the final submission to fail otherwise. Update the JSON object with the check keys (this is a check field in the player object).
  7. Submit the entire JSON object to POST /submission and hope that it works!

Do you need USEBIO?

Yes! While it’s true that you can technically skip (1) above and generate the JSON object from scratch, it’s very much not advisable. It will be a lot simpler for you to create the well-documented USEBIO file than to try and figure out our largely undocumented JSON format. That will also mean that you are compatible with third-parties that use USEBIO. And we may also want to add fields to the JSON, which you wouldn’t necessarily know about.

Check session date

This endpoints checks a date for two things: whether this club/county has already submitted a session for this date (in which case it might be a duplicate and a warning could be given); and whether this club/county has registered for a Sim Pairs event on this date (in which they should be prompted for whether they want to submit it to the Sim too).

HTTP Request

GET https://www.ebu.co.uk/members/api-3.1/session-date/20161005

{
    "response": {
        "login": "county",
        "Sims": [
            {
                "ID": "000181",
                "Description": "British Autumn Pairs Wednesday"
            }
        ],
        "Duplicates": 1,
        "process_time": "0.4424s"
    }
}
<response>
    <login>county</login>
    <Sims>
        <ID>000181</ID>
        <Description>British Autumn Pairs Wednesday</Description>
    </Sims>
    <Duplicates>1</Duplicates>
    <process_time>0.4424s</process_time>
</response>
response
login,county
Sims,000181,British Autumn Pairs Wednesday
Duplicates,1
process_time,0.4424s

GET https://www.ebu.co.uk/members/api-3.1/session-date/{date}

Query parameters

Parameter Default Description
date none The date you’re interested in, in the format yyyymmdd.

Response

Field Description
Sims A list of Sims that we’re registered for on this date (will almost always be one), along with the name and ID.
Duplicates A count of the number of other sessions we’ve submitted for this date.

Check players

This endpoint checks a list of players to make sure that the EBU numbers match the surname. This check is strongly recommended before a submission is sent, to limit the chances of a submission failing (and also to speed it up).

There are a few things to note:

HTTP Request

POST https://www.ebu.co.uk/members/api-3.1/submission/check-players

We're using this request:
[
    {
        "ebu": "00987654",
        "surname": "Shears"
    },
    {
        "ebu": "00987653",
        "surname": "NotExist"
    },
    {
        "ebu": "00987652",
        "surname": "Cooke"
    }
]
{
    "response": {
        "login": "county",
        "Players": [
            {
                "ebu": "00987654",
                "surname": "Shears",
                "check": "cd44d12da"
            },
            {
                "ebu": "00987653",
                "surname": "NotExist",
                "bad_ebu": 1
            },
            {
                "ebu": "00987652",
                "surname": "Cooke",
                "found_surname": "Cook",
                "mismatch": 1
            }
        ],
        "BadEBUs": 1,
        "Mismatches": 1,
        "process_time": "1.9095s"
    }
}
<response>
    <login>county</login>
    <Players>
        <ListItem>
            <ebu>00987654</ebu>
            <surname>Clark</surname>
            <check>cd43d12da</check>
        </ListItem>
        <ListItem>
            <ebu>00987653</ebu>
            <surname>NotExist</surname>
            <bad_ebu>1</bad_ebu>
        </ListItem>
        <ListItem>
            <ebu>00987652</ebu>
            <surname>Cooke</surname>
        <found_surname>Cook</found_surname>
        <mismatch>1</mismatch>
        </ListItem>
    </Players>
    <BadEBUs>1</BadEBUs>
    <Mismatches>1</Mismatches>
    <process_time>1.9095s</process_time>
</response>
This one comes out horribly, so don't even try!

POST https://www.ebu.co.uk/members/api-3.1/submission/check-players

Query parameters

Parameter Default Description
data none A JSON-encoded string containing an array of player objects, each containing the values 'ebu’ and 'surname’. See the example query to the right.

Response

Returns a list of Players items, with the following information:

Field Description
ebu The EBU number supplied.
surname The surname supplied.
mismatch A boolean to say if the name did not match the EBU number.
found_surname In the case of a mismatch, this identifies the surname found.
bad_ebu A boolean to say if this EBU number does not exist on the database.
check A check key which can be used during the final submission to bypass the surname check. See below for details.

Additionally, the response tells you how many mismatches there were and how many non-existent EBU numbers, to save you looking through them all.

What are Check Keys?

When an EBU number matches a surname, a Check Key is returned. This is a very simple hash of the EBU number and surname, and is used to verify that this combination has been checked by the system and doesn’t need to be checked again. Therefore, when you submit this to the final submission routine (below), it’ll save a few seconds.

These won’t change so long as the EBU number and surname don’t change, so you can store these offline if you wish and skip the POST /submission/check-players step in the submissions process when you have no new players.

Submit session

This endpoint submits session data. A description of what you need to do to prepare for this step can be found at the top of this section. We will reiterate that it’s very much advisable that you let the EBU know what you’re developing so that we can assist you in checking that everything is being done correctly.

HTTP Request

POST https://www.ebu.co.uk/members/api-3.1/submission

POST https://www.ebu.co.uk/members/api-3.1/submission

Query parameters

Parameter Default Description
data none A JSON-encoded string containing all the session data. This needs to be in the same format as the EBU’s parser outputs.

Response

Field Description
failure Lots of possible failure messages can be returned, all of which should halt submission.
warnings If a player has no check key supplied, we will have to check it again and will print a warning. You should try to avoid letting this happen, as it will slow down the process.
SessionID If everything is successful, the new session’s ID will be returned in this field.

Sim Pairs

These procedures deal with Simultaneous Pairs events and how clubs can register and submit results to them.

Get list of Sims

There are two versions of this endpoint. One is when you’re logging in as a club or county and lists all the sim pairs events coming up, with information about whether this club/county is registered or not. The other is when you’re logging in as a member and lists all the sim pairs for which you are the nominated contact, along with links to where to access the files.

As a reminder of how this works, clubs register for Sim Pairs events and nominate a member who should have access to the deal files and commentary. That member then logs in to their own My EBU to get access to the files. Counties and non-affiliated (usually Scottish or Welsh) clubs differ in that they have access to the deal files through their own account and do not need to nominate a member.

HTTP Request (for clubs/counties)

GET https://www.ebu.co.uk/members/api-3.1/sims

{
    "response": {
        "login": "club",
        "Events": [
            {
                "ID": "000001",
                "Description": "Sim Pairs Monday",
                "Date": "20170904120000",
                "Registered": "1",
                "Contact": "00987654",
                "NoBooklets": "0",
                "Name": {
                    "Surname": "s'Aveyes",
                    "Forenames": "Hill"
                },
                "Booklets": "3",
                "Travellers": "0"
            },
            {
                "ID": "000002",
                "Description": "Sim Pairs Tuesday",
                "Date": "20170905120000",
                "NoBooklets": "0",
                "Registered": "0"
            },
        ],
        "Registered": 1,
        "process_time": "1.8222s"
    }
}
<response>
    <login>club</login>
    <Events>
        <ID>000001</ID>
        <Description>Sim Pairs Monday</Description>
        <Date>20170904120000</Date>
        <Registered>1</Registered>
        <Contact>00987654</Contact>
        <NoBooklets>0</NoBooklets>
        <Name>
            <Surname>s'Aveyes</Surname>
            <Forenames>Hill</Forenames>
        </Name>
        <Booklets>3</Booklets>
        <Travellers>0</Travellers>
    </Events>
    <Events>
        <ID>000002</ID>
        <Description>Sim Pairs Tuesday</Description>
        <Date>20170905120000</Date>
        <NoBooklets>0</NoBooklets>
        <Registered>0</Registered>
    </Events>
    <Registered>1</Registered>
    <process_time>1.8222s</process_time>
</response>
response
login,club
Events,000001,Sim Pairs Monday,20170904120000,1,00987654,0,s'Aveyes,Hill,3,0
Events,000002,Sim Pairs Tuesday,20170905120000,0,0
Registered,1
process_time,1.8222s

GET https://www.ebu.co.uk/members/api-3.1/sims

Response

Returns a list of Events with the following fields:

Field Description
ID The ID of the Sim Pairs session. Every day has a unique ID.
Description The description of this event.
Date The date of the event.
Registered Booklean saying whether this club/county is registered for this event.
Contact The EBU number of the contact who should have access to the files.
NoBooklets A boolean value for if there are no booklets available in this event. Can be used to prevent clubs ordering booklets that don’t exist.
Name Surname and Forenames fields for the contact.
Booklets The number of booklet packets ordered. Booklets come in packets of 10.
Travellers A boolean value for whether travellers have also been ordered.

There is also a Registered field at the top level, which gives a count of the number of events this club is registered for.

HTTP Request (for members)

GET https://www.ebu.co.uk/members/api-3.1/sims

{
    "response": {
        "login": "member",
        "Events": [
            {
                "ID": "000001",
                "Description": "Sim Pairs Monday",
                "Folder": "20170904_abcdefghijk",
                "Date": "20170904120000",
                "Club": "EBU Bridge Club",
                "Files": [
                    "20170904_all.zip",
                    "20170904_commentary.pdf",
                    "20170904_commentary_booklet.pdf",
                    "20170904_curtains_back.pdf",
                    "20170904_curtains_front.pdf",
                    "20170904_deal.bri",
                    "20170904_deal.csv",
                    "20170904_deal.dlm",
                    "20170904_deal.dup",
                    "20170904_deal.pbn",
                    "20170904_travellers_numbered.pdf",
                    "20170904_travellers_unnumbered.pdf"
                ]
            }
        ],
        "process_time": "1.2444s"
    }
}
<response>
    <login>member</login>
    <Events>
        <ID>000001</ID>
        <Description>Sim Pairs Monday</Description>
        <Folder>20170904_abcdefghijk</Folder>
        <Date>20170904120000</Date>
        <Club>EBU Bridge Club</Club>
        <Files>
            <ListItem>20170904_all.zip</ListItem>
            <ListItem>20170904_commentary.pdf</ListItem>
            <ListItem>20170904_commentary_booklet.pdf</ListItem>
            <ListItem>20170904_curtains_back.pdf</ListItem>
            <ListItem>20170904_curtains_front.pdf</ListItem>
            <ListItem>20170904_deal.bri</ListItem>
            <ListItem>20170904_deal.csv</ListItem>
            <ListItem>20170904_deal.dlm</ListItem>
            <ListItem>20170904_deal.dup</ListItem>
            <ListItem>20170904_deal.pbn</ListItem>
            <ListItem>20170904_travellers_numbered.pdf</ListItem>
            <ListItem>20170904_travellers_unnumbered.pdf</ListItem>
        </Files>
    </Events>
    <process_time>1.2444s</process_time>
</response>
response
login,member
Events,000001,Sim Pairs Monday,20170904_abcdefghijk,20170904120000,EBU Bridge Club,20170904_all.zip,20170904_commentary.pdf,20170904_commentary_booklet.pdf,20170904_curtains_back.pdf,20170904_curtains_front.pdf,20170904_deal.bri,20170904_deal.csv,20170904_deal.dlm,20170904_deal.dup,20170904_deal.pbn,20170904_travellers_numbered.pdf,20170904_travellers_unnumbered.pdf
process_time,1.2444s

GET https://www.ebu.co.uk/members/api-3.1/sims

Response

Returns a list of Events with the following fields. Note that you can only get these for future sims events.

Field Description
ID The ID of the Sim Pairs session. Every day has a unique ID.
Description The description of this event.
Folder The folder where the files for this event can be found (if available). For example, if the folder is called ‘foldername’ then you can find the files at http://www.ebu.co.uk/sims/events/foldername. The folder name includes a random string to make it hard/impossible for someone to guess the location of the files.
Date The date of the event.
Club The club which registered you.
Files A list of file names that can be found inside the above folder. Hopefully these are self-explanatory.

Register for a Sim

This endpoint lets you register for a Sim Pairs event, and order booklets. It can also be used to update an existing registration - just send the new information and it will overwrite the original. You cannot unregister for a Sim Pairs event online (this is to stop people from registering just to gain access to the hand records). To unregister, contact Leszek in the office.

HTTP Request

POST https://www.ebu.co.uk/members/api-3.1/sims/{id}

{
    "response": {
        "login": "club",
        "success": "Registered for event",
        "booklet_success": "Booklets ordered/amended",
        "process_time": "1.4411s"
    }
}
<response>
    <login>club</login>
    <success>Registered for event</success>
    <booklet_success>Booklets ordered/amended</booklet_success>
    <process_time>1.4411s</process_time>
</response>
response
login,club
success,Registered for event
booklet_success,Booklets ordered/amended
process_time,1.4411s

POST https://www.ebu.co.uk/members/api-3.1/sims/{id}

Query parameters

Parameter Default Description
contact none The EBU number of the nominated contact who will have access to the files. Not required for a county login.
booklets 0 Number of packets of booklets that the club wants. Booklets come in packets of 10, so don’t get this confused with individual booklets or it will be expensive!
travellers 0 Boolean value for whether the club wants travellers to be included with the booklets.

Response

Field Description
success Whether the request was successful or not.
booklet_success Whether the booklets were successfully ordered or not. You can register for an event up to the day of the event, but booklets must be ordered earlier than this. If a club is too late to order booklets online, they can contact Leszek in the EBU office who may be able to help.

Add a session to a Sim

This endpoint lets you push a session that has already been submitted into a Sim Pairs event that the club is registered for on the same day. This is typically not necessary, since it is done at the same time as submission of the session, but sometimes it is omitted by mistake and this is a way to recover.

HTTP Request

POST https://www.ebu.co.uk/members/api-3.1/sim/000100/session/00987654-000001

{
    "response": {
        "login": "club",
        "success": "Session processed (ID #000100)",
        "process_time": "2.2547s"
    }
}
<response>
    <login>club</login>
    <success>Session processed (ID #000100)</success>
    <process_time>2.2547s</process_time>
</response>
response
login,club
success,Session processed (ID #000100)
process_time,2.2547s

POST https://www.ebu.co.uk/members/api-3.1/sim/{id}/session/{sid}

Query parameters

Parameter Default Description
id none The ID of the Sim Pairs event.
sid none The ID of the Session that we want to add to this sim.

Remove a session from a Sim

This endpoint lets you remove a session from a Sim Pairs event.

HTTP Request

DELETE https://www.ebu.co.uk/members/api-3.1/sim/000100/session/00987654-000001

{
    "response": {
        "login": "club",
        "success": "Session removed",
        "process_time": "0.7103s"
    }
}
<response>
    <login>club</login>
    <success>Session removed</success>
    <process_time>0.7103s</process_time>
</response>
response
login,club
success,Session removed
process_time,0.7103s

DELETE https://www.ebu.co.uk/members/api-3.1/sim/{id}/session/{sid}

Query parameters

Parameter Default Description
id none The ID of the Sim Pairs event.
sid none The ID of the Session that we want to remove from this sim.

Leagues and Knockouts

We don’t anticipate any interest in the procedure calls to interact with the two web applications EBULeague and EBUKnockout. If we’re wrong about this then drop us a line and tell us why you want to develop an integration, rather than using the existing user interface.