<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Open Match – Open Match Documentation</title>
    <link>/site/docs/</link>
    <description>Recent content in Open Match Documentation on Open Match</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="/site/docs/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Game Frontend</title>
      <link>/site/docs/guides/matchmaker/frontend/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/guides/matchmaker/frontend/</guid>
      <description>
        
        
        &lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;The Game Frontend receives the matchmaking request from the Player&amp;rsquo;s Game Client. It can authenticate the player and fetch the player data from some backend storage (or Platform Services if required). It submits the matchmaking request to Open Match by creating a Ticket. Once an Assignment is set for this Ticket, the Game Frontend communicates the Assignment back to the Game Client. Game Frontend may handle creating lobbies, groups, etc.&lt;/p&gt;
&lt;h2 id=&#34;open-match-interactions&#34;&gt;Open Match Interactions&lt;/h2&gt;
&lt;p&gt;Here are the key interactions the Game Frontend has with Open Match:&lt;/p&gt;
&lt;h3 id=&#34;creating-a-ticket&#34;&gt;Creating a Ticket&lt;/h3&gt;
&lt;p&gt;The Game Frontend adds a new matchmaking request to Open Match by creating a Ticket using the following API on Open Match Frontend:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;rpc&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;CreateTicket&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;CreateTicketRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;returns&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Ticket&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;option&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;google.api.http&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;post&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/v1/frontendservice/tickets&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;body&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;ticket&#34;&gt;Ticket&lt;/h4&gt;
&lt;p&gt;A Ticket represents a single matchmaking request in Open Match. It can represent a single Player or a group of Players. Here is a proto for the Ticket:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;message&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Ticket&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Id represents an auto-generated Id issued by Open Match.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;id&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// An Assignment represents a game server assignment associated with a Ticket.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Open Match does not require or inspect any fields on Assignment.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;Assignment&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;assignment&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Search fields are the fields which Open Match is aware of, and can be used
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// when specifying filters.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;SearchFields&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;search_fields&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Customized information not inspected by Open Match, to be used by the match
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// making function, evaluator, and components making calls to Open Match.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Optional, depending on the requirements of the connected systems.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;map&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;google.protobuf.Any&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;extensions&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Create time represents the time at which this Ticket was created. It is
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// populated by Open Match at the time of Ticket creation.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;google.protobuf.Timestamp&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;create_time&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;searchfields&#34;&gt;SearchFields&lt;/h4&gt;
&lt;p&gt;When creating a Ticket, the Open Match frontend populates SearchFields which specify the properties for the Ticket that can be used for filtering the Tickets. SearchFields can be of different types (double, string, tag) and an appropriate one should be chosen based on the nature of the property and filtering requirements. Here is a sample SearchField specifying the MMR, role and game mode.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;SearchFields&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;SearchFields&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;DoubleArgs&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;map&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;float64&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;attribute.mmr&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;50&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;StringArgs&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;map&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;attribute.role&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;warrior&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;Tags&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;mode.demo&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;fetching-the-assignment&#34;&gt;Fetching the Assignment&lt;/h3&gt;
&lt;p&gt;The Game Frontend can get the current Ticket from Open Match and check if the Ticket has Assignment information populated. Here are the APIs to get a Ticket and to get Assignment information respectively :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;rpc&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;GetTicket&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GetTicketRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;returns&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Ticket&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;option&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;google.api.http&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/v1/frontendservice/tickets/{ticket_id}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;rpc&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;WatchAssignments&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;WatchAssignmentsRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;returns&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;stream&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;WatchAssignmentsResponse&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;option&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;google.api.http&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/v1/frontendservice/tickets/{ticket_id}/assignments&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;

    Open Match does not guarantee persistent storage and hence should not be used as the authoritative source for Game Client Assignment information. Once the Assignment for a Ticket is fetched, the Game Frontent should (if necessary) persist this information in its own persistent storage for future lookup.

&lt;/div&gt;

&lt;h3 id=&#34;deleting-a-ticket&#34;&gt;Deleting a Ticket&lt;/h3&gt;
&lt;p&gt;Once the player Assignment has been stored &amp;amp; communicated to the Game Client, the Game Frontend may delete the Ticket from Open Match. Here is the API exposed on Open Match Frontend to delete a Ticket:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;rpc&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;DeleteTicket&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;DeleteTicketRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;returns&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;google.protobuf.Empty&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;option&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;google.api.http&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;delete&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/v1/frontendservice/tickets/{ticket_id}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: Install with YAML</title>
      <link>/site/docs/installation/yaml/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/installation/yaml/</guid>
      <description>
        
        
        &lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kubernetes.io&#34;&gt;Kubernetes&lt;/a&gt; cluster, tested on Kubernetes version 1.27+&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;install-core-open-match&#34;&gt;Install Core Open Match&lt;/h2&gt;
&lt;p&gt;Open Match comprises of a set of core services hosted in a Kubernetes cluster. The simplest way to install Open Match core is to use the &lt;code&gt;01-open-match-core.yaml&lt;/code&gt; for the latest release. This installs Open Match with the default configuration.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;01-open-match-core.yaml&lt;/code&gt; contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Core Open Match service deployments.&lt;/li&gt;
&lt;li&gt;A Redis deployment as Open Match&amp;rsquo;s state storage system.&lt;/li&gt;
&lt;li&gt;HorizontalAutoScalars to auto-scale Open Match based on pods&#39; average CPU utilization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is the command to install the Open Match core in your cluster:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Install the core Open Match services.&lt;/span&gt;
kubectl apply --namespace open-match &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  -f https://open-match.dev/install/v1.8.0/yaml/01-open-match-core.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;

    The flag &lt;code&gt;--namespace open-match&lt;/code&gt; is &lt;strong&gt;&lt;strong&gt;Required&lt;/strong&gt;&lt;/strong&gt;. Open Match may not work as expected without this flag.

&lt;/div&gt;

&lt;p&gt;After installing Open Match core services, here is the expected state for the pods for these services:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl get -n open-match pod
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;Output:

NAME                                        READY   STATUS              RESTARTS   AGE
open-match-backend-76d8d76c96-fmhmn         0/1     ContainerCreating   0          3m53s
open-match-frontend-57fc9f6b66-86hxj        0/1     ContainerCreating   0          3m53s
open-match-query-799d8549d4-5qpgx           0/1     ContainerCreating   0          3m53s
open-match-swaggerui-867d79b885-m9q6x       0/1     ContainerCreating   0          3m54s
open-match-synchronizer-7f48f84dfd-j8swx    0/1     ContainerCreating   0          3m54s
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;

    &lt;p&gt;Open Match needs to be customized to run as a Matchmaker.
This custom configuration is provided to the Open Match components via a ConfigMap
(&lt;code&gt;open-match-configmap-override&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Thus, starting the core service pods will remain in &lt;code&gt;ContainerCreating&lt;/code&gt; until this config map is available.&lt;/p&gt;


&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you are proceeding with the &lt;a href=&#34;/site/site/docs/getting-started/&#34;&gt;Getting Started&lt;/a&gt;, or following the &lt;a href=&#34;/site/site/docs/tutorials/&#34;&gt;Tutorials&lt;/a&gt;, proceed with this guide to &lt;a href=&#34;#install-the-default-evaluator&#34;&gt;install the default Evaluator&lt;/a&gt; and configure Open Match to use it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you finished reading the tutorials and are building your own custom matchmaker and need to deploy a custom evaluator, then skip the next step and instead use the &lt;a href=&#34;/site/site/docs/guides/custom/&#34;&gt;Customization Guide&lt;/a&gt; for steps to customize your Open Match installation.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;install-the-default-evaluator&#34;&gt;Install the Default Evaluator&lt;/h2&gt;
&lt;p&gt;Run the below command to install the default Evaluator in the open-match namespace and to configure Open Match to use it.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl apply --namespace open-match &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  -f https://open-match.dev/install/v1.8.0/yaml/06-open-match-override-configmap.yaml &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  -f https://open-match.dev/install/v1.8.0/yaml/07-open-match-default-evaluator.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;delete-open-match&#34;&gt;Delete Open Match&lt;/h2&gt;
&lt;p&gt;To delete Open Match and the corresponding sample components from this cluster, simply run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl delete namespace open-match
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s Next&lt;/h2&gt;
&lt;p&gt;Follow the &lt;a href=&#34;/site/site/docs/getting-started/&#34;&gt;Getting Started&lt;/a&gt; guide to see Open Match in action.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Step 1 - Build your own Game Frontend</title>
      <link>/site/docs/tutorials/matchmaker101/frontend/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/tutorials/matchmaker101/frontend/</guid>
      <description>
        
        
        &lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;The Game Frontend serves as a layer that transfers players&#39; matchmaking requests from players&#39; Game Client to proto messages that Open Match can understand. The Game Frontend typically performs the following tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fetches the player data from some backend storage (or Platform Services if required) and authenticates players.&lt;/li&gt;
&lt;li&gt;Submits the matchmaking requests to Open Match by creating a Ticket.&lt;/li&gt;
&lt;li&gt;Communicates the Assignment result back to the Game Client once Open Match found an Assignment for this Ticket.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This tutorial provides a very basic Game Frontend scaffold (&lt;code&gt;$TUTORIALROOT/frontend&lt;/code&gt;) that periodically generates batches of fake Tickets, adds them to Open Match, and polls these Tickets for Assignment. Once an Assignment is received it emits a log with the Assignment details (as a proxy for returning the Assignment to the Player) and deletes the Ticket from Open Match.&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;

    Under production environment, polling each Ticket for Assignment is not recommended. We recommend using event handlers/listeners to communicate Assignments result to the Game Frontend.

&lt;/div&gt;

&lt;h2 id=&#34;links-to-api-definitions-for-this-tutorial&#34;&gt;Links to API Definitions for this tutorial&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#openmatch.Ticket&#34;&gt;pb.Ticket&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#frontend&#34;&gt;frontend.CreateTicket&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#frontend&#34;&gt;frontend.GetTicket&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#frontend&#34;&gt;frontend.DeleteTicket&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;/table&gt;
&lt;h2 id=&#34;make-changes&#34;&gt;Make Changes&lt;/h2&gt;
&lt;p&gt;The Game Frontend uses a helper function &lt;code&gt;makeTicket()&lt;/code&gt; in &lt;code&gt;$TUTORIALROOT/frontend/ticket.go&lt;/code&gt; to generate a fake Ticket. Any property that is intended to be used for Matchmaking (for instance, game mode in this case) is set as a SearchField on the Ticket. For this tutorial, we create a Ticket that has a game mode specified as a Tag SearchField. The below code snippet picks a random game mode and sets it as a Tag on a fake Ticket.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;makeTicket&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Ticket&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;modes&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;mode.demo&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;mode.ctf&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;mode.battleroyale&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;ticket&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Ticket&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;SearchFields&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;SearchFields&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;Tags&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;modes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;rand&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Intn&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;len&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;modes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))],&lt;/span&gt;
      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;

  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ticket&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Please copy the above helper or add your own fake Ticket creation logic to &lt;code&gt;$TUTORIALROOT/frontend/ticket.go&lt;/code&gt;. Also, you may tweak the size of the Ticket creation batches, polling interval, etc. in &lt;code&gt;$TUTORIALROOT/frontend/main.go&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;configuring&#34;&gt;Configuring&lt;/h3&gt;
&lt;p&gt;The following values need to be changed if your setup is different from the default in the &lt;code&gt;$TUTORIALROOT/frontend/main.go&lt;/code&gt;. The default value assumes you have Open Match deployed under &lt;code&gt;open-match&lt;/code&gt; namespace and the Game Frontend under &lt;code&gt;mm101-tutorial&lt;/code&gt; namespace in the same cluster:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;omFrontendEndpoint&lt;/code&gt; - Open Match Frontend endpoint&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;build-and-push&#34;&gt;Build and Push&lt;/h2&gt;
&lt;p&gt;Now that you have customized the Game Frontend, please run the below commands from &lt;code&gt;$TUTORIALROOT&lt;/code&gt; to build a new image and push it to your configured image registry.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-cmd&#34; data-lang=&#34;cmd&#34;&gt;# Build the Frontend image.
docker build -t $REGISTRY/mm101-tutorial-frontend frontend/

# Push the Frontend image to the configured Registry.
docker push $REGISTRY/mm101-tutorial-frontend
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s Next&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s proceed to build the &lt;a href=&#34;/site/site/docs/tutorials/matchmaker101/director/&#34;&gt;Director&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Director</title>
      <link>/site/docs/guides/matchmaker/director/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/guides/matchmaker/director/</guid>
      <description>
        
        
        &lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;The Director fetches Matches from Open Match for a set of MatchProfiles. For these matches, it fetches Game Server from a DGS allocation system. It can then communicate the Assignments back to the Game Frontend.&lt;/p&gt;
&lt;h2 id=&#34;open-match-interactions&#34;&gt;Open Match Interactions&lt;/h2&gt;
&lt;p&gt;Here are the key interactions the Director has with Open Match:&lt;/p&gt;
&lt;h3 id=&#34;fetching-matches&#34;&gt;Fetching Matches&lt;/h3&gt;
&lt;p&gt;The Director can fetch matches for one or more MatchProfiles using the following API on Open Match Backend:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;rpc&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;FetchMatches&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;FetchMatchesRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;returns&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;stream&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;FetchMatchesResponse&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;option&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;google.api.http&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;post&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/v1/backendservice/matches:fetch&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;body&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The request to fetch matches provides a FunctionConfig and one or more MatchProfile.&lt;/p&gt;
&lt;h4 id=&#34;functionconfig&#34;&gt;FunctionConfig&lt;/h4&gt;
&lt;p&gt;For every FetchMatches call, the Director can specify the details of which Match Function to trigger. It can do so by providing the configuration for the Match function, giving the host, port and the type of function endpoint to call.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;message&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;FunctionConfig&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;host&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int32&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;port&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;Type&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;type&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;enum&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Type&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;GRPC&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;REST&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;matchprofile&#34;&gt;MatchProfile&lt;/h4&gt;
&lt;p&gt;MatchProfile is a representation of a Match specification. It bears the following information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Profile name that is then specified in the generated matches to identify which profile a Match belongs to.&lt;/li&gt;
&lt;li&gt;Pools of Tickets to be considered for the Match (each pool has the search criteria to filter players belonging to that Pool)&lt;/li&gt;
&lt;li&gt;Roster (Optional) specifies a named grouping of Ticket Ids, primarily used in Backfill scenarios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is a sample MatchProfile that specifies two different Pools of Tickets with tank and dps roles for a CTF game mode. The director could query concurrently for another MatchProfile that specifies the same roles but for a battle-royale game mode.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;MatchProfile&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;Name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;test_profile_name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;Pools&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;Name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;pool_ctf_tank&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;TagPresentFilters&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;TagPresentFilter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{{&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;mode.ctf&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}},&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;StringEqualsFilters&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;StringEqualsFilter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{{&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;StringArg&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;attributes.role&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;Value&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;     &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;tank&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}}&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;Name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;pool_ctf_dps&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;TagPresentFilters&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;TagPresentFilter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{{&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Tag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;mode.ctf&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}},&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;StringEqualsFilters&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;StringEqualsFilter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{{&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;StringArg&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;attributes.role&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;Value&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;     &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;dps&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}}&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;assigning-tickets&#34;&gt;Assigning Tickets&lt;/h3&gt;
&lt;p&gt;Once a Match is generated, the Director can fetch a Game Server for this Match from the DGS (Dedicated Game Server) allocation system and then set that as an Assignment on all the Tickets of this Match. Here is the API on Open Match Backend to do this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;rpc&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;AssignTickets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;AssignTicketsRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;returns&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;AssignTicketsResponse&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;option&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;google.api.http&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;post&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/v1/backendservice/tickets:assign&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;body&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The API takes a list of &lt;code&gt;AssignmentGroups&lt;/code&gt; to make the Assignment and returns the AssignmentFailures if any.&lt;/p&gt;
&lt;h4 id=&#34;assignment&#34;&gt;Assignment&lt;/h4&gt;
&lt;p&gt;Here are the protos for the Assignment:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;message&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;AssignmentGroup&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// TicketIds is a list of strings representing Open Match generated Ids which apply to an Assignment.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;repeated&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ticket_ids&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// An Assignment specifies game connection related information to be associated with the TicketIds.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;Assignment&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;assignment&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;message&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;AssignmentFailure&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;enum&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Cause&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;UNKNOWN&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;TICKET_NOT_FOUND&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ticket_id&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;Cause&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;cause&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It comprises of the connection string, and a set of extension blobs that Open Match passes through.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Grafana: Go Processes</title>
      <link>/site/docs/guides/telemetry/grafana-go-processes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/guides/telemetry/grafana-go-processes/</guid>
      <description>
        
        
        &lt;p&gt;Here is a &lt;a href=&#34;https://snapshot.raintank.io/dashboard/snapshot/EwEoNzsCfz4z7ZuHH6gYavWJ3TQP48oJ&#34;&gt;raintank snapshot&lt;/a&gt; to what you will see after navigating to the Go Processes dashboard.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric Name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CPU Usage Limit Percentage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Current CPU usage to CPU resource limit ratio per pod (%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Go Routines&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Average number of Go routines by deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Process Memory&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Average number of resident/virtual memory by deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Process Memory Derivative&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Derivative of the average number of resident/virtual memory by deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Go Memstats&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Average number of &lt;code&gt;bytes allocated&lt;/code&gt;/&lt;code&gt;allocation rate&lt;/code&gt;/&lt;code&gt;stack inuse&lt;/code&gt;/&lt;code&gt;heap inuse&lt;/code&gt; by deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Go Memstats Derivative&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Derivative of the average number of &lt;code&gt;bytes allocated&lt;/code&gt;/&lt;code&gt;allocation rate&lt;/code&gt;/&lt;code&gt;stack inuse&lt;/code&gt;/&lt;code&gt;heap inuse&lt;/code&gt; by deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Open File Descriptors&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Average number of currently opened file descriptors by deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Open File Descriptors Derivative&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Derivative of the average number of currently opened file descriptors by deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GC Duration Quantiles&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Average number of garbage collection time by deployment and quantile&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Grafana: gRPC</title>
      <link>/site/docs/guides/telemetry/grafana-grpc/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/guides/telemetry/grafana-grpc/</guid>
      <description>
        
        
        &lt;p&gt;Here is a &lt;a href=&#34;https://snapshot.raintank.io/dashboard/snapshot/0IpGHqbDsP3CXdZi4E9lo454RthSMDVi&#34;&gt;raintank snapshot&lt;/a&gt; to what you will see after navigating to the gRPC dashboard.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric Name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Client Request Rate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Average gRPC client side request per second by Open Match API methods&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Server Request Rate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Average gRPC server side request per second by Open Match API methods&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gRPC Error Rate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ratio of gRPC calls that returned an non-OK status code by Open Match methods&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Network IO per second&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Total network I/O rate per second&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Bytes Sent per Call: openmatch.{Component}/{MethodName}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Average bytes sent per call by quantile&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Bytes Received per Call: openmatch.{Component}/{MethodName}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Average bytes received per call by quantile&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Client RTT: openmatch.{Component}/{MethodName}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Average roundtrip latency by quantile&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Grafana: Redis</title>
      <link>/site/docs/guides/telemetry/grafana-redis/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/guides/telemetry/grafana-redis/</guid>
      <description>
        
        
        &lt;p&gt;Here is a &lt;a href=&#34;https://snapshot.raintank.io/dashboard/snapshot/GkJjEmiHVzgJCX3MoeR8p9BnL4K4vfYE&#34;&gt;raintank snapshot&lt;/a&gt; to what you will see after navigating to the Redis dashboard.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric Name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Uptime&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Redis uptime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Memory Usage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Redis memory usage in percentage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Total DB Items&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Total Redis DB keys in Redis master&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CPU Usage Percentage of Limit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Current CPU usage to CPU resource limit ratio per pod (%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Total Memory Usage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Current and maximum Redis memory usage by Redis instances&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Hits / Misses per Sec&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cache hits/misses per second by Redis instances&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Commands Executed / sec&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Executed Redis commands per second by Redis instances (excludes Redis sync calls)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Network I/O&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Total network I/O per second by Redis instances&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Clients&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Number of currently connected Redis clients by Redis instances&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Install with Helm</title>
      <link>/site/docs/installation/helm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/installation/helm/</guid>
      <description>
        
        
        &lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.helm.sh/helm/&#34;&gt;Helm&lt;/a&gt; package manager, tested on version 3.12.3+&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kubernetes.io&#34;&gt;Kubernetes&lt;/a&gt; cluster, tested on Kubernetes version 1.27+&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;install-the-open-match-helm-chart&#34;&gt;Install the Open Match helm chart&lt;/h2&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;

    If you don&amp;rsquo;t have &lt;code&gt;Helm&lt;/code&gt; installed, read the &lt;a href=&#34;https://helm.sh/docs/intro/&#34;&gt;Using Helm&lt;/a&gt; documentation to get started. The Open Match helm chart only installs the core services by default, please &lt;a href=&#34;/site/site/docs/installation/helm/#configuration&#34;&gt;override default helm configs&lt;/a&gt; if you need to install telemetry support.

&lt;/div&gt;

&lt;p&gt;Open Match has various deployment options. Depending on your needs you can choose one of the available deployment options below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/site/site/docs/installation/helm/#install-open-match-using-stable-helm-repository&#34;&gt;Install Open Match using stable Helm repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/site/site/docs/installation/helm/#install-open-match-using-a-specific-version&#34;&gt;Install Open Match using a specific version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/site/site/docs/installation/helm/#install-open-match-with-the-default-evaluator&#34;&gt;Install Open Match with the Default Evaluator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;install-open-match-using-stable-helm-repository&#34;&gt;Install Open Match using stable Helm repository&lt;/h2&gt;
&lt;p&gt;To install the chart with the release name &lt;code&gt;open-match&lt;/code&gt; using our stable helm repository:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;helm repo add open-match https://open-match.dev/chart/stable
helm install open-match --create-namespace --namespace open-match open-match/open-match
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;install-open-match-using-a-specific-version&#34;&gt;Install Open Match using a specific version&lt;/h2&gt;
&lt;p&gt;Helm install the latest stable version of Open Match &lt;code&gt;v1.8.0&lt;/code&gt; by default. To view the available helm chart versions and install a specific Open Match version:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# View available Open Match helm chart versions&lt;/span&gt;
helm search repo --versions open-match/open-match
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Install a specific Open Match helm chart version&lt;/span&gt;
helm install open-match --create-namespace --namespace open-match open-match/open-match --version&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;CHART_VERSION
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;

    &lt;p&gt;Open Match needs to be customized to run as a Matchmaker.
This custom configuration is provided to the Open Match components via a ConfigMap
(&lt;code&gt;om-configmap-override&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Thus, starting the core service pods will remain in &lt;code&gt;ContainerCreating&lt;/code&gt; until this config map is available.&lt;/p&gt;


&lt;/div&gt;

&lt;h2 id=&#34;install-open-match-with-the-default-evaluator&#34;&gt;Install Open Match with the Default Evaluator&lt;/h2&gt;
&lt;p&gt;Run the command below to install the default Evaluator and configure Open Match to use it.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Install the Default Evaluator&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Install ConfigMap `om-configmap-override`, this ConfigMap configures Open Match to talk to the Default Evaluator &lt;/span&gt;
helm install open-match --create-namespace --namespace open-match open-match/open-match &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --set open-match-customize.enabled&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --set open-match-customize.evaluator.enabled&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --set open-match-override.enabled&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To install Open Match with the Default Evaluator and another version of Open Match, you can run this command below&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Install the Default Evaluator with specific version of Open Match&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Install ConfigMap `om-configmap-override`, this ConfigMap configures Open Match to talk to the Default Evaluator &lt;/span&gt;
helm install open-match --create-namespace --namespace open-match open-match/open-match --version&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;CHART_VERSION &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --set open-match-customize.enabled&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --set open-match-customize.evaluator.enabled&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --set open-match-override.enabled&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;uninstalling-the-chart&#34;&gt;Uninstalling the Chart&lt;/h2&gt;
&lt;p&gt;To uninstall/delete the &lt;code&gt;open-match&lt;/code&gt; deployment:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;helm uninstall -n open-match open-match &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\ &lt;/span&gt;
kubectl delete namespace open-match
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The command removes all the Kubernetes components associated with the chart and deletes the release.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Specify each parameter using the &lt;code&gt;--set key=value[,key=value]&lt;/code&gt; argument to &lt;code&gt;helm install&lt;/code&gt;. For example,&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;helm install --name open-match --namespace open-match open-match/open-match &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --set open-match-telemetry.enabled&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The above command sets the namespace where Open Match is deployed to &lt;code&gt;open-match&lt;/code&gt;, and turns on the telemetry exporters along with installing Open Match core services.&lt;/p&gt;
&lt;p&gt;The following tables lists the configurable parameters of the Open Match chart and their default values.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;query.portType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines Kubernetes &lt;a href=&#34;https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types&#34;&gt;ServiceTypes&lt;/a&gt; for the QueryService&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ClusterIP&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;query.replicas&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines the number of pod replicas for QueryService&amp;rsquo;s Kubernetes deployment&lt;/td&gt;
&lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;frontend.portType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines Kubernetes &lt;a href=&#34;https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types&#34;&gt;ServiceTypes&lt;/a&gt; for the FrontendService&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ClusterIP&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;frontend.replicas&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines the number of pod replicas for FrontendService&amp;rsquo;s Kubernetes deployment&lt;/td&gt;
&lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;backend.portType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines Kubernetes &lt;a href=&#34;https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types&#34;&gt;ServiceTypes&lt;/a&gt; for the BackendService&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ClusterIP&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;backend.replicas&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines the number of pod replicas for BackendService&amp;rsquo;s Kubernetes deployment&lt;/td&gt;
&lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;image.pullPolicy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Global &lt;code&gt;imagePullPolicy&lt;/code&gt; for all Open Match service deployments&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Always&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;image.tag&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Global Docker image tag for all Open Match service deployments&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.8.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open-match-core.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turn on/off the installation of Open Match core services&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open-match-core.registrationInterval&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Duration of registration window for evaluation/synchronization cycle.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;250ms&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open-match-core.proposalCollectionInterval&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Length of time after match function has started before it will be canceled.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;20s&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open-match-core.pendingReleaseTimeout&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines the time before a ticket returns to the pool after it was fetched.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1m&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open-match-core.assignedDeleteTimeout&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Time after a ticket has been assigned before it is automatically deleted.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;10m&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open-match-core.backfillLockTimeout&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Defines the time of keeping a lock on a single backfill.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1m&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open-match-override.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turn on/off the installation of &lt;code&gt;om-override-configmap&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open-match-telemetry.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turn on/off the installation of Open Match telemetry services&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open-match-scale.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turn on/off the installation of Open Match scale testing setups&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.kubernetes.serviceAccount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Service account name for the Open Match core services&lt;/td&gt;
&lt;td&gt;&lt;code&gt;open-match-unprivileged-service&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.kubernetes.service.portType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Overrides the ServiceTypes for all Open Match core services&lt;/td&gt;
&lt;td&gt;``&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.gcpProjectId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Overrides the default gcp project id for use with stackdriver&lt;/td&gt;
&lt;td&gt;&lt;code&gt;replace_with_your_project_id&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.tls.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turn on/off TLS encryption for all Open Match traffics&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.tls.server.mountPath&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The VolumeMount path for TLS server&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/app/secrets/tls/server&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.tls.rootca.mountPath&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The VolumeMount path for TLS CA&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/app/secrets/tls/rootca&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.logging.rpc.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turn on/off RPC payload logging for all Open Match core services&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.telemetry.zpages.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turn on/off Open Match zPages instrument.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.telemetry.prometheus.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turn on/off Open Match Prometheus exporter. Also install Prometheus if &lt;code&gt;open-match-telemetry.enabled&lt;/code&gt; is set to true&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.telemetry.prometheus.endpoint&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bind the Prometheus exporters to the specified endpoint handler, also configures the &lt;code&gt;prometheus.io/path&lt;/code&gt; k8s scraping annotations&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/metrics&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.telemetry.prometheus.serviceDiscovery&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;If Prometheus is enabled and &lt;code&gt;serviceDiscover: true&lt;/code&gt;, add the Prometheus scraping annotations to each Pod of the Open Match core services&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.telemetry.stackdriverMetrics.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turn on/off Open Match Stackdriver Metrics exporter.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.telemetry.stackdriverMetrics.prefix&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;MetricPrefix overrides the prefix of a Stackdriver metric display names to help you better identifies your metrics&lt;/td&gt;
&lt;td&gt;&lt;code&gt;open_match&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.telemetry.grafana.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turn on/off Open Match Grafana exporter. Also install Grafana if &lt;code&gt;open-match-telemetry.enabled&lt;/code&gt; is set to true&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;global.telemetry.reportingPeriod&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Overrides the reporting periods of Open Match telemetry exporters&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1m&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open-match-telemetry.grafana&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Inherits the values from &lt;a href=&#34;https://github.com/helm/charts/tree/master/stable/grafana&#34;&gt;Grafana helm chart&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;open-match-telemetry.prometheus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Inherits the values from &lt;a href=&#34;https://github.com/helm/charts/tree/master/stable/prometheus&#34;&gt;Prometheus helm chart&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;redis&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Inherits the values from the &lt;a href=&#34;https://github.com/bitnami/charts/tree/master/bitnami/redis&#34;&gt;Bitnami Redis Helm chart&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s Next&lt;/h2&gt;
&lt;p&gt;Follow the &lt;a href=&#34;/site/site/docs/getting-started/&#34;&gt;Getting Started&lt;/a&gt; guide to see Open Match in action.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Open Match API References</title>
      <link>/site/docs/reference/api/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/reference/api/</guid>
      <description>
        
        
        &lt;h1 id=&#34;protocol-documentation&#34;&gt;Protocol Documentation&lt;/h1&gt;
&lt;p&gt;&lt;a name=&#34;top&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_backend-proto&#34;&gt;api/backend.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AssignTicketsRequest&#34;&gt;AssignTicketsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AssignTicketsResponse&#34;&gt;AssignTicketsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AssignmentFailure&#34;&gt;AssignmentFailure&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AssignmentGroup&#34;&gt;AssignmentGroup&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-FetchMatchesRequest&#34;&gt;FetchMatchesRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-FetchMatchesResponse&#34;&gt;FetchMatchesResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-FunctionConfig&#34;&gt;FunctionConfig&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-ReleaseAllTicketsRequest&#34;&gt;ReleaseAllTicketsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-ReleaseAllTicketsResponse&#34;&gt;ReleaseAllTicketsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-ReleaseTicketsRequest&#34;&gt;ReleaseTicketsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-ReleaseTicketsResponse&#34;&gt;ReleaseTicketsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AssignmentFailure-Cause&#34;&gt;AssignmentFailure.Cause&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-FunctionConfig-Type&#34;&gt;FunctionConfig.Type&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-BackendService&#34;&gt;BackendService&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_evaluator-proto&#34;&gt;api/evaluator.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-EvaluateRequest&#34;&gt;EvaluateRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-EvaluateResponse&#34;&gt;EvaluateResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Evaluator&#34;&gt;Evaluator&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_extensions-proto&#34;&gt;api/extensions.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#openmatch-DefaultEvaluationCriteria&#34;&gt;DefaultEvaluationCriteria&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_frontend-proto&#34;&gt;api/frontend.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AcknowledgeBackfillRequest&#34;&gt;AcknowledgeBackfillRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AcknowledgeBackfillResponse&#34;&gt;AcknowledgeBackfillResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-CreateBackfillRequest&#34;&gt;CreateBackfillRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-CreateTicketRequest&#34;&gt;CreateTicketRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-DeleteBackfillRequest&#34;&gt;DeleteBackfillRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-DeleteTicketRequest&#34;&gt;DeleteTicketRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-GetBackfillRequest&#34;&gt;GetBackfillRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-GetTicketRequest&#34;&gt;GetTicketRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-UpdateBackfillRequest&#34;&gt;UpdateBackfillRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-WatchAssignmentsRequest&#34;&gt;WatchAssignmentsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-WatchAssignmentsResponse&#34;&gt;WatchAssignmentsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-FrontendService&#34;&gt;FrontendService&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_matchfunction-proto&#34;&gt;api/matchfunction.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-RunRequest&#34;&gt;RunRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-RunResponse&#34;&gt;RunResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-MatchFunction&#34;&gt;MatchFunction&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_messages-proto&#34;&gt;api/messages.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Assignment&#34;&gt;Assignment&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Assignment-ExtensionsEntry&#34;&gt;Assignment.ExtensionsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Backfill-ExtensionsEntry&#34;&gt;Backfill.ExtensionsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Backfill-PersistentFieldEntry&#34;&gt;Backfill.PersistentFieldEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-DoubleRangeFilter&#34;&gt;DoubleRangeFilter&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Match&#34;&gt;Match&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Match-ExtensionsEntry&#34;&gt;Match.ExtensionsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-MatchProfile&#34;&gt;MatchProfile&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-MatchProfile-ExtensionsEntry&#34;&gt;MatchProfile.ExtensionsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Pool&#34;&gt;Pool&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-SearchFields&#34;&gt;SearchFields&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-SearchFields-DoubleArgsEntry&#34;&gt;SearchFields.DoubleArgsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-SearchFields-StringArgsEntry&#34;&gt;SearchFields.StringArgsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-StringEqualsFilter&#34;&gt;StringEqualsFilter&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-TagPresentFilter&#34;&gt;TagPresentFilter&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Ticket-ExtensionsEntry&#34;&gt;Ticket.ExtensionsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Ticket-PersistentFieldEntry&#34;&gt;Ticket.PersistentFieldEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-DoubleRangeFilter-Exclude&#34;&gt;DoubleRangeFilter.Exclude&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_query-proto&#34;&gt;api/query.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryBackfillsRequest&#34;&gt;QueryBackfillsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryBackfillsResponse&#34;&gt;QueryBackfillsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryTicketIdsRequest&#34;&gt;QueryTicketIdsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryTicketIdsResponse&#34;&gt;QueryTicketIdsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryTicketsRequest&#34;&gt;QueryTicketsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryTicketsResponse&#34;&gt;QueryTicketsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryService&#34;&gt;QueryService&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#scalar-value-types&#34;&gt;Scalar Value Types&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a name=&#34;api_backend-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apibackendproto&#34;&gt;api/backend.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AssignTicketsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignticketsrequest&#34;&gt;AssignTicketsRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;assignments&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AssignmentGroup&#34;&gt;AssignmentGroup&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Assignments is a list of assignment groups that contain assignment and the Tickets to which they should be applied.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AssignTicketsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignticketsresponse&#34;&gt;AssignTicketsResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;failures&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AssignmentFailure&#34;&gt;AssignmentFailure&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Failures is a list of all the Tickets that failed assignment along with the cause of failure.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AssignmentFailure&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignmentfailure&#34;&gt;AssignmentFailure&lt;/h3&gt;
&lt;p&gt;AssignmentFailure contains the id of the Ticket that failed the Assignment and the failure status.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cause&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AssignmentFailure-Cause&#34;&gt;AssignmentFailure.Cause&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AssignmentGroup&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignmentgroup&#34;&gt;AssignmentGroup&lt;/h3&gt;
&lt;p&gt;AssignmentGroup contains an Assignment and the Tickets to which it should be applied.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_ids&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;TicketIds is a list of strings representing Open Match generated Ids which apply to an Assignment.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;assignment&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Assignment&#34;&gt;Assignment&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An Assignment specifies game connection related information to be associated with the TicketIds.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-FetchMatchesRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;fetchmatchesrequest&#34;&gt;FetchMatchesRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;config&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-FunctionConfig&#34;&gt;FunctionConfig&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A configuration for the MatchFunction server of this FetchMatches call.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;profile&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-MatchProfile&#34;&gt;MatchProfile&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A MatchProfile that will be sent to the MatchFunction server of this FetchMatches call.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-FetchMatchesResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;fetchmatchesresponse&#34;&gt;FetchMatchesResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;match&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Match&#34;&gt;Match&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Match generated by the user-defined MMF with the specified MatchProfiles. A valid Match response will contain at least one ticket.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-FunctionConfig&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;functionconfig&#34;&gt;FunctionConfig&lt;/h3&gt;
&lt;p&gt;FunctionConfig specifies a MMF address and client type for Backend to establish connections with the MMF&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;host&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;port&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#int32&#34;&gt;int32&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;type&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-FunctionConfig-Type&#34;&gt;FunctionConfig.Type&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-ReleaseAllTicketsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;releaseallticketsrequest&#34;&gt;ReleaseAllTicketsRequest&lt;/h3&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-ReleaseAllTicketsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;releaseallticketsresponse&#34;&gt;ReleaseAllTicketsResponse&lt;/h3&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-ReleaseTicketsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;releaseticketsrequest&#34;&gt;ReleaseTicketsRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_ids&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;TicketIds is a list of string representing Open Match generated Ids to be re-enabled for MMF querying because they are no longer awaiting assignment from a previous match result&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-ReleaseTicketsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;releaseticketsresponse&#34;&gt;ReleaseTicketsResponse&lt;/h3&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AssignmentFailure-Cause&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignmentfailurecause&#34;&gt;AssignmentFailure.Cause&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Number&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNKNOWN&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TICKET_NOT_FOUND&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-FunctionConfig-Type&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;functionconfigtype&#34;&gt;FunctionConfig.Type&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Number&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GRPC&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;REST&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-BackendService&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;backendservice&#34;&gt;BackendService&lt;/h3&gt;
&lt;p&gt;The BackendService implements APIs to generate matches and handle ticket assignments.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method Name&lt;/th&gt;
&lt;th&gt;Request Type&lt;/th&gt;
&lt;th&gt;Response Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FetchMatches&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-FetchMatchesRequest&#34;&gt;FetchMatchesRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-FetchMatchesResponse&#34;&gt;FetchMatchesResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;FetchMatches triggers a MatchFunction with the specified MatchProfile and returns a set of matches generated by the Match Making Function, and accepted by the evaluator. Tickets in matches returned by FetchMatches are moved from active to pending, and will not be returned by query.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AssignTickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AssignTicketsRequest&#34;&gt;AssignTicketsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AssignTicketsResponse&#34;&gt;AssignTicketsResponse&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;AssignTickets overwrites the Assignment field of the input TicketIds.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ReleaseTickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-ReleaseTicketsRequest&#34;&gt;ReleaseTicketsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-ReleaseTicketsResponse&#34;&gt;ReleaseTicketsResponse&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;ReleaseTickets moves tickets from the pending state, to the active state. This enables them to be returned by query, and find different matches. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ReleaseAllTickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-ReleaseAllTicketsRequest&#34;&gt;ReleaseAllTicketsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-ReleaseAllTicketsResponse&#34;&gt;ReleaseAllTicketsResponse&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;ReleaseAllTickets moves all tickets from the pending state, to the active state. This enables them to be returned by query, and find different matches. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_evaluator-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apievaluatorproto&#34;&gt;api/evaluator.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-EvaluateRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;evaluaterequest&#34;&gt;EvaluateRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;match&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Match&#34;&gt;Match&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Matches proposed by the Match Function representing a candidate of the final results.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-EvaluateResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;evaluateresponse&#34;&gt;EvaluateResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;match_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Match ID representing a shortlisted match returned by the evaluator as the final result.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Evaluator&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;evaluator&#34;&gt;Evaluator&lt;/h3&gt;
&lt;p&gt;The Evaluator service implements APIs used to evaluate and shortlist matches proposed by MMFs.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method Name&lt;/th&gt;
&lt;th&gt;Request Type&lt;/th&gt;
&lt;th&gt;Response Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Evaluate&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-EvaluateRequest&#34;&gt;EvaluateRequest&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-EvaluateResponse&#34;&gt;EvaluateResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;Evaluate evaluates a list of proposed matches based on quality, collision status, and etc, then shortlist the matches and returns the final results.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_extensions-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apiextensionsproto&#34;&gt;api/extensions.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-DefaultEvaluationCriteria&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;defaultevaluationcriteria&#34;&gt;DefaultEvaluationCriteria&lt;/h3&gt;
&lt;p&gt;A DefaultEvaluationCriteria is used for a match&#39;s evaluation_input when using
the default evaluator.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;score&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#double&#34;&gt;double&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_frontend-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apifrontendproto&#34;&gt;api/frontend.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AcknowledgeBackfillRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;acknowledgebackfillrequest&#34;&gt;AcknowledgeBackfillRequest&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An existing ID of Backfill to acknowledge.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;assignment&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Assignment&#34;&gt;Assignment&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An updated Assignment of the requested Backfill.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AcknowledgeBackfillResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;acknowledgebackfillresponse&#34;&gt;AcknowledgeBackfillResponse&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;The Backfill that was acknowledged.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;All of the Tickets that were successfully assigned&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-CreateBackfillRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;createbackfillrequest&#34;&gt;CreateBackfillRequest&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An empty Backfill object.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-CreateTicketRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;createticketrequest&#34;&gt;CreateTicketRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Ticket object with SearchFields defined.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-DeleteBackfillRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;deletebackfillrequest&#34;&gt;DeleteBackfillRequest&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An existing ID of Backfill to delete.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-DeleteTicketRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;deleteticketrequest&#34;&gt;DeleteTicketRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A TicketId of a generated Ticket to be deleted.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-GetBackfillRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;getbackfillrequest&#34;&gt;GetBackfillRequest&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An existing ID of Backfill to retrieve.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-GetTicketRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;getticketrequest&#34;&gt;GetTicketRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A TicketId of a generated Ticket.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-UpdateBackfillRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;updatebackfillrequest&#34;&gt;UpdateBackfillRequest&lt;/h3&gt;
&lt;p&gt;UpdateBackfillRequest - update searchFields, extensions and set assignment.&lt;/p&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Backfill object with ID set and fields to update.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-WatchAssignmentsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;watchassignmentsrequest&#34;&gt;WatchAssignmentsRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A TicketId of a generated Ticket to get updates on.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-WatchAssignmentsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;watchassignmentsresponse&#34;&gt;WatchAssignmentsResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;assignment&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Assignment&#34;&gt;Assignment&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An updated Assignment of the requested Ticket.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-FrontendService&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;frontendservice&#34;&gt;FrontendService&lt;/h3&gt;
&lt;p&gt;The FrontendService implements APIs to manage and query status of a Tickets.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method Name&lt;/th&gt;
&lt;th&gt;Request Type&lt;/th&gt;
&lt;th&gt;Response Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CreateTicket&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-CreateTicketRequest&#34;&gt;CreateTicketRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;CreateTicket assigns an unique TicketId to the input Ticket and record it in state storage. A ticket is considered as ready for matchmaking once it is created. - If a TicketId exists in a Ticket request, an auto-generated TicketId will override this field. - If SearchFields exist in a Ticket, CreateTicket will also index these fields such that one can query the ticket with query.QueryTickets function.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeleteTicket&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-DeleteTicketRequest&#34;&gt;DeleteTicketRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Empty&#34;&gt;.google.protobuf.Empty&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;DeleteTicket immediately stops Open Match from using the Ticket for matchmaking and removes the Ticket from state storage. The client should delete the Ticket when finished matchmaking with it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GetTicket&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-GetTicketRequest&#34;&gt;GetTicketRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;GetTicket get the Ticket associated with the specified TicketId.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WatchAssignments&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-WatchAssignmentsRequest&#34;&gt;WatchAssignmentsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-WatchAssignmentsResponse&#34;&gt;WatchAssignmentsResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;WatchAssignments stream back Assignment of the specified TicketId if it is updated. - If the Assignment is not updated, GetAssignment will retry using the configured backoff strategy.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AcknowledgeBackfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AcknowledgeBackfillRequest&#34;&gt;AcknowledgeBackfillRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AcknowledgeBackfillResponse&#34;&gt;AcknowledgeBackfillResponse&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;AcknowledgeBackfill is used to notify OpenMatch about GameServer connection info This triggers an assignment process. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CreateBackfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-CreateBackfillRequest&#34;&gt;CreateBackfillRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;CreateBackfill creates a new Backfill object. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeleteBackfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-DeleteBackfillRequest&#34;&gt;DeleteBackfillRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Empty&#34;&gt;.google.protobuf.Empty&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;DeleteBackfill receives a backfill ID and deletes its resource. Any tickets waiting for this backfill will be returned to the active pool, no longer pending. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GetBackfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-GetBackfillRequest&#34;&gt;GetBackfillRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;GetBackfill returns a backfill object by its ID. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UpdateBackfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-UpdateBackfillRequest&#34;&gt;UpdateBackfillRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;UpdateBackfill updates search_fields and extensions for the backfill with the provided id. Any tickets waiting for this backfill will be returned to the active pool, no longer pending. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_matchfunction-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apimatchfunctionproto&#34;&gt;api/matchfunction.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-RunRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;runrequest&#34;&gt;RunRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;profile&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-MatchProfile&#34;&gt;MatchProfile&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A MatchProfile defines constraints of Tickets in a Match and shapes the Match proposed by the MatchFunction.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-RunResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;runresponse&#34;&gt;RunResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;proposal&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Match&#34;&gt;Match&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Proposal represents a Match candidate that satifies the constraints defined in the input Profile. A valid Proposal response will contain at least one ticket.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-MatchFunction&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;matchfunction&#34;&gt;MatchFunction&lt;/h3&gt;
&lt;p&gt;The MatchFunction service implements APIs to run user-defined matchmaking logics.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method Name&lt;/th&gt;
&lt;th&gt;Request Type&lt;/th&gt;
&lt;th&gt;Response Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Run&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-RunRequest&#34;&gt;RunRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-RunResponse&#34;&gt;RunResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;DO NOT CALL THIS FUNCTION MANUALLY. USE backend.FetchMatches INSTEAD. Run pulls Tickets that satisfy Profile constraints from QueryService, runs matchmaking logic against them, then constructs and streams back match candidates to the Backend service.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_messages-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apimessagesproto&#34;&gt;api/messages.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Assignment&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignment&#34;&gt;Assignment&lt;/h3&gt;
&lt;p&gt;An Assignment represents a game server assignment associated with a Ticket.
Open Match does not require or inspect any fields on assignment.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;connection&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Connection information for this Assignment.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;extensions&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Assignment-ExtensionsEntry&#34;&gt;Assignment.ExtensionsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be used by the match making function, evaluator, and components making calls to Open Match. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Assignment-ExtensionsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignmentextensionsentry&#34;&gt;Assignment.ExtensionsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Backfill&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;backfill&#34;&gt;Backfill&lt;/h3&gt;
&lt;p&gt;Represents a backfill entity which is used to fill partially full matches.&lt;/p&gt;
&lt;p&gt;BETA FEATURE WARNING:  This call and the associated Request and Response
messages are not finalized and still subject to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Id represents an auto-generated Id issued by Open Match.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;search_fields&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-SearchFields&#34;&gt;SearchFields&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Search fields are the fields which Open Match is aware of, and can be used when specifying filters.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;extensions&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill-ExtensionsEntry&#34;&gt;Backfill.ExtensionsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be used by the Match Function, evaluator, and components making calls to Open Match. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;persistent_field&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill-PersistentFieldEntry&#34;&gt;Backfill.PersistentFieldEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be kept persistent throughout the life-cycle of a backfill. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;create_time&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Timestamp&#34;&gt;google.protobuf.Timestamp&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Create time is the time the Ticket was created. It is populated by Open Match at the time of Ticket creation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;generation&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#int64&#34;&gt;int64&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Generation gets incremented on GameServers update operations. Prevents the MMF from overriding a newer version from the game server. Do NOT read or write to this field, it is for internal tracking, and changing the value will cause bugs.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Backfill-ExtensionsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;backfillextensionsentry&#34;&gt;Backfill.ExtensionsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Backfill-PersistentFieldEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;backfillpersistentfieldentry&#34;&gt;Backfill.PersistentFieldEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-DoubleRangeFilter&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;doublerangefilter&#34;&gt;DoubleRangeFilter&lt;/h3&gt;
&lt;p&gt;Filters numerical values to only those within a range.
double_arg: &amp;quot;foo&amp;quot;
max: 10
min: 5
matches:
{&amp;quot;foo&amp;quot;: 5}
{&amp;quot;foo&amp;quot;: 7.5}
{&amp;quot;foo&amp;quot;: 10}
does not match:
{&amp;quot;foo&amp;quot;: 4}
{&amp;quot;foo&amp;quot;: 10.01}
{&amp;quot;foo&amp;quot;: &amp;quot;7.5&amp;quot;}
{}&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;double_arg&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Name of the ticket&#39;s search_fields.double_args this Filter operates on.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;max&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#double&#34;&gt;double&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Maximum value.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;min&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#double&#34;&gt;double&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Minimum value.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exclude&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-DoubleRangeFilter-Exclude&#34;&gt;DoubleRangeFilter.Exclude&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Defines the bounds to apply when filtering tickets by their search_fields.double_args value. BETA FEATURE WARNING: This field and the associated values are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Match&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;match&#34;&gt;Match&lt;/h3&gt;
&lt;p&gt;A Match is used to represent a completed match object. It can be generated by
a MatchFunction as a proposal or can be returned by OpenMatch as a result in
response to the FetchMatches call.
When a match is returned by the FetchMatches call, it should contain at least
one ticket to be considered as valid.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;match_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Match ID that should be passed through the stack for tracing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;match_profile&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Name of the match profile that generated this Match.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;match_function&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Name of the match function that generated this Match.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Tickets belonging to this match.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;extensions&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Match-ExtensionsEntry&#34;&gt;Match.ExtensionsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be used by the match making function, evaluator, and components making calls to Open Match. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;backfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Backfill request which contains additional information to the match and contains an association to a GameServer. BETA FEATURE WARNING: This field is not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;allocate_gameserver&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#bool&#34;&gt;bool&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;AllocateGameServer signalise Director that Backfill is new and it should allocate a GameServer, this Backfill would be assigned. BETA FEATURE WARNING: This field is not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Match-ExtensionsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;matchextensionsentry&#34;&gt;Match.ExtensionsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-MatchProfile&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;matchprofile&#34;&gt;MatchProfile&lt;/h3&gt;
&lt;p&gt;A MatchProfile is Open Match&#39;s representation of a Match specification. It is
used to indicate the criteria for selecting players for a match. A
MatchProfile is the input to the API to get matches and is passed to the
MatchFunction. It contains all the information required by the MatchFunction
to generate match proposals.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;name&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Name of this match profile.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pools&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Pool&#34;&gt;Pool&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Set of pools to be queried when generating a match for this MatchProfile.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;extensions&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-MatchProfile-ExtensionsEntry&#34;&gt;MatchProfile.ExtensionsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be used by the match making function, evaluator, and components making calls to Open Match. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-MatchProfile-ExtensionsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;matchprofileextensionsentry&#34;&gt;MatchProfile.ExtensionsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Pool&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;pool&#34;&gt;Pool&lt;/h3&gt;
&lt;p&gt;Pool specfies a set of criteria that are used to select a subset of Tickets
that meet all the criteria.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;name&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A developer-chosen human-readable name for this Pool.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;double_range_filters&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-DoubleRangeFilter&#34;&gt;DoubleRangeFilter&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Set of Filters indicating the filtering criteria. Selected tickets must match every Filter.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;string_equals_filters&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-StringEqualsFilter&#34;&gt;StringEqualsFilter&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tag_present_filters&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-TagPresentFilter&#34;&gt;TagPresentFilter&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;created_before&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Timestamp&#34;&gt;google.protobuf.Timestamp&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;If specified, only Tickets created before the specified time are selected.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;created_after&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Timestamp&#34;&gt;google.protobuf.Timestamp&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;If specified, only Tickets created after the specified time are selected.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-SearchFields&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;searchfields&#34;&gt;SearchFields&lt;/h3&gt;
&lt;p&gt;Search fields are the fields which Open Match is aware of, and can be used
when specifying filters.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;double_args&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-SearchFields-DoubleArgsEntry&#34;&gt;SearchFields.DoubleArgsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Float arguments. Filterable on ranges.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;string_args&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-SearchFields-StringArgsEntry&#34;&gt;SearchFields.StringArgsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;String arguments. Filterable on equality.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tags&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Filterable on presence or absence of given value.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-SearchFields-DoubleArgsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;searchfieldsdoubleargsentry&#34;&gt;SearchFields.DoubleArgsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#double&#34;&gt;double&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-SearchFields-StringArgsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;searchfieldsstringargsentry&#34;&gt;SearchFields.StringArgsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-StringEqualsFilter&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;stringequalsfilter&#34;&gt;StringEqualsFilter&lt;/h3&gt;
&lt;p&gt;Filters strings exactly equaling a value.
string_arg: &amp;quot;foo&amp;quot;
value: &amp;quot;bar&amp;quot;
matches:
{&amp;quot;foo&amp;quot;: &amp;quot;bar&amp;quot;}
does not match:
{&amp;quot;foo&amp;quot;: &amp;quot;baz&amp;quot;}
{&amp;quot;bar&amp;quot;: &amp;quot;foo&amp;quot;}
{}&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;string_arg&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Name of the ticket&#39;s search_fields.string_args this Filter operates on.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-TagPresentFilter&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;tagpresentfilter&#34;&gt;TagPresentFilter&lt;/h3&gt;
&lt;p&gt;Filters to the tag being present on the search_fields.
tag: &amp;quot;foo&amp;quot;
matches:
[&amp;quot;foo&amp;quot;]
[&amp;quot;bar&amp;quot;,&amp;quot;foo&amp;quot;]
does not match:
[&amp;quot;bar&amp;quot;]
[]&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;tag&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Ticket&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;ticket&#34;&gt;Ticket&lt;/h3&gt;
&lt;p&gt;A Ticket is a basic matchmaking entity in Open Match. A Ticket may represent
an individual &#39;Player&#39;, a &#39;Group&#39; of players, or any other concepts unique to
your use case. Open Match will not interpret what the Ticket represents but
just treat it as a matchmaking unit with a set of SearchFields. Open Match
stores the Ticket in state storage and enables an Assignment to be set on the
Ticket.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Id represents an auto-generated Id issued by Open Match.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;assignment&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Assignment&#34;&gt;Assignment&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An Assignment represents a game server assignment associated with a Ticket, or whatever finalized matched state means for your use case. Open Match does not require or inspect any fields on Assignment.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;search_fields&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-SearchFields&#34;&gt;SearchFields&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Search fields are the fields which Open Match is aware of, and can be used when specifying filters.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;extensions&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket-ExtensionsEntry&#34;&gt;Ticket.ExtensionsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be used by the match making function, evaluator, and components making calls to Open Match. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;persistent_field&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket-PersistentFieldEntry&#34;&gt;Ticket.PersistentFieldEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be kept persistent throughout the life-cycle of a ticket. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;create_time&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Timestamp&#34;&gt;google.protobuf.Timestamp&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Create time is the time the Ticket was created. It is populated by Open Match at the time of Ticket creation.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Ticket-ExtensionsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;ticketextensionsentry&#34;&gt;Ticket.ExtensionsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Ticket-PersistentFieldEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;ticketpersistentfieldentry&#34;&gt;Ticket.PersistentFieldEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-DoubleRangeFilter-Exclude&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;doublerangefilterexclude&#34;&gt;DoubleRangeFilter.Exclude&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Number&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NONE&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;No bounds should be excluded when evaluating the filter, i.e.: MIN &amp;lt;= x &amp;lt;= MAX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIN&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Only the minimum bound should be excluded when evaluating the filter, i.e.: MIN &amp;lt; x &amp;lt;= MAX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAX&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Only the maximum bound should be excluded when evaluating the filter, i.e.: MIN &amp;lt;= x &amp;lt; MAX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOTH&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Both bounds should be excluded when evaluating the filter, i.e.: MIN &amp;lt; x &amp;lt; MAX&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_query-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apiqueryproto&#34;&gt;api/query.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryBackfillsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;querybackfillsrequest&#34;&gt;QueryBackfillsRequest&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING:  This Request messages are not finalized and
still subject to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;pool&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Pool&#34;&gt;Pool&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;The Pool representing the set of Filters to be queried.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryBackfillsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;querybackfillsresponse&#34;&gt;QueryBackfillsResponse&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING:  This Request messages are not finalized and
still subject to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfills&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Backfills that meet all the filtering criteria requested by the pool.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryTicketIdsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;queryticketidsrequest&#34;&gt;QueryTicketIdsRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;pool&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Pool&#34;&gt;Pool&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;The Pool representing the set of Filters to be queried.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryTicketIdsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;queryticketidsresponse&#34;&gt;QueryTicketIdsResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ids&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;TicketIDs that meet all the filtering criteria requested by the pool.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryTicketsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;queryticketsrequest&#34;&gt;QueryTicketsRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;pool&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Pool&#34;&gt;Pool&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;The Pool representing the set of Filters to be queried.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryTicketsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;queryticketsresponse&#34;&gt;QueryTicketsResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;tickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Tickets that meet all the filtering criteria requested by the pool.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryService&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;queryservice&#34;&gt;QueryService&lt;/h3&gt;
&lt;p&gt;The QueryService service implements helper APIs for Match Function to query Tickets from state storage.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method Name&lt;/th&gt;
&lt;th&gt;Request Type&lt;/th&gt;
&lt;th&gt;Response Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;QueryTickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryTicketsRequest&#34;&gt;QueryTicketsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryTicketsResponse&#34;&gt;QueryTicketsResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;QueryTickets gets a list of Tickets that match all Filters of the input Pool. - If the Pool contains no Filters, QueryTickets will return all Tickets in the state storage. QueryTickets pages the Tickets by &lt;code&gt;queryPageSize&lt;/code&gt; and stream back responses. - queryPageSize is default to 1000 if not set, and has a minimum of 10 and maximum of 10000.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QueryTicketIds&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryTicketIdsRequest&#34;&gt;QueryTicketIdsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryTicketIdsResponse&#34;&gt;QueryTicketIdsResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;QueryTicketIds gets the list of TicketIDs that meet all the filtering criteria requested by the pool. - If the Pool contains no Filters, QueryTicketIds will return all TicketIDs in the state storage. QueryTicketIds pages the TicketIDs by &lt;code&gt;queryPageSize&lt;/code&gt; and stream back responses. - queryPageSize is default to 1000 if not set, and has a minimum of 10 and maximum of 10000.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QueryBackfills&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryBackfillsRequest&#34;&gt;QueryBackfillsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryBackfillsResponse&#34;&gt;QueryBackfillsResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;QueryBackfills gets a list of Backfills. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;scalar-value-types&#34;&gt;Scalar Value Types&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;.proto Type&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;C++&lt;/th&gt;
&lt;th&gt;Java&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;th&gt;Go&lt;/th&gt;
&lt;th&gt;C#&lt;/th&gt;
&lt;th&gt;PHP&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;double&#34; /&gt; double&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;double&lt;/td&gt;
&lt;td&gt;double&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;float64&lt;/td&gt;
&lt;td&gt;double&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;Float&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;float&#34; /&gt; float&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;float32&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;Float&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;int32&#34; /&gt; int32&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;int64&#34; /&gt; int64&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;integer/string&lt;/td&gt;
&lt;td&gt;Bignum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;uint32&#34; /&gt; uint32&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding.&lt;/td&gt;
&lt;td&gt;uint32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;uint32&lt;/td&gt;
&lt;td&gt;uint&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;uint64&#34; /&gt; uint64&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding.&lt;/td&gt;
&lt;td&gt;uint64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;uint64&lt;/td&gt;
&lt;td&gt;ulong&lt;/td&gt;
&lt;td&gt;integer/string&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;sint32&#34; /&gt; sint32&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;sint64&#34; /&gt; sint64&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;integer/string&lt;/td&gt;
&lt;td&gt;Bignum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;fixed32&#34; /&gt; fixed32&lt;/td&gt;
&lt;td&gt;Always four bytes. More efficient than uint32 if values are often greater than 2^28.&lt;/td&gt;
&lt;td&gt;uint32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;uint32&lt;/td&gt;
&lt;td&gt;uint&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;fixed64&#34; /&gt; fixed64&lt;/td&gt;
&lt;td&gt;Always eight bytes. More efficient than uint64 if values are often greater than 2^56.&lt;/td&gt;
&lt;td&gt;uint64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;uint64&lt;/td&gt;
&lt;td&gt;ulong&lt;/td&gt;
&lt;td&gt;integer/string&lt;/td&gt;
&lt;td&gt;Bignum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;sfixed32&#34; /&gt; sfixed32&lt;/td&gt;
&lt;td&gt;Always four bytes.&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;sfixed64&#34; /&gt; sfixed64&lt;/td&gt;
&lt;td&gt;Always eight bytes.&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;integer/string&lt;/td&gt;
&lt;td&gt;Bignum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;bool&#34; /&gt; bool&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;TrueClass/FalseClass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;string&#34; /&gt; string&lt;/td&gt;
&lt;td&gt;A string must always contain UTF-8 encoded or 7-bit ASCII text.&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;str/unicode&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;String (UTF-8)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;bytes&#34; /&gt; bytes&lt;/td&gt;
&lt;td&gt;May contain any arbitrary sequence of bytes.&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;ByteString&lt;/td&gt;
&lt;td&gt;str&lt;/td&gt;
&lt;td&gt;[]byte&lt;/td&gt;
&lt;td&gt;ByteString&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;String (ASCII-8BIT)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;this-document-provides-api-references-for-open-match-services&#34;&gt;title: &amp;ldquo;Open Match API References&amp;rdquo;
linkTitle: &amp;ldquo;Open Match API References&amp;rdquo;
weight: 2
description:
This document provides API references for Open Match services.&lt;/h2&gt;
&lt;h1 id=&#34;protocol-documentation-1&#34;&gt;Protocol Documentation&lt;/h1&gt;
&lt;p&gt;&lt;a name=&#34;top&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;table-of-contents-1&#34;&gt;Table of Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_backend-proto&#34;&gt;api/backend.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AssignTicketsRequest&#34;&gt;AssignTicketsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AssignTicketsResponse&#34;&gt;AssignTicketsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AssignmentFailure&#34;&gt;AssignmentFailure&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AssignmentGroup&#34;&gt;AssignmentGroup&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-FetchMatchesRequest&#34;&gt;FetchMatchesRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-FetchMatchesResponse&#34;&gt;FetchMatchesResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-FunctionConfig&#34;&gt;FunctionConfig&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-ReleaseAllTicketsRequest&#34;&gt;ReleaseAllTicketsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-ReleaseAllTicketsResponse&#34;&gt;ReleaseAllTicketsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-ReleaseTicketsRequest&#34;&gt;ReleaseTicketsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-ReleaseTicketsResponse&#34;&gt;ReleaseTicketsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AssignmentFailure-Cause&#34;&gt;AssignmentFailure.Cause&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-FunctionConfig-Type&#34;&gt;FunctionConfig.Type&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-BackendService&#34;&gt;BackendService&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_evaluator-proto&#34;&gt;api/evaluator.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-EvaluateRequest&#34;&gt;EvaluateRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-EvaluateResponse&#34;&gt;EvaluateResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Evaluator&#34;&gt;Evaluator&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_extensions-proto&#34;&gt;api/extensions.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#openmatch-DefaultEvaluationCriteria&#34;&gt;DefaultEvaluationCriteria&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_frontend-proto&#34;&gt;api/frontend.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AcknowledgeBackfillRequest&#34;&gt;AcknowledgeBackfillRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-AcknowledgeBackfillResponse&#34;&gt;AcknowledgeBackfillResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-CreateBackfillRequest&#34;&gt;CreateBackfillRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-CreateTicketRequest&#34;&gt;CreateTicketRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-DeleteBackfillRequest&#34;&gt;DeleteBackfillRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-DeleteTicketRequest&#34;&gt;DeleteTicketRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-GetBackfillRequest&#34;&gt;GetBackfillRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-GetTicketRequest&#34;&gt;GetTicketRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-UpdateBackfillRequest&#34;&gt;UpdateBackfillRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-WatchAssignmentsRequest&#34;&gt;WatchAssignmentsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-WatchAssignmentsResponse&#34;&gt;WatchAssignmentsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-FrontendService&#34;&gt;FrontendService&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_matchfunction-proto&#34;&gt;api/matchfunction.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-RunRequest&#34;&gt;RunRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-RunResponse&#34;&gt;RunResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-MatchFunction&#34;&gt;MatchFunction&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_messages-proto&#34;&gt;api/messages.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Assignment&#34;&gt;Assignment&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Assignment-ExtensionsEntry&#34;&gt;Assignment.ExtensionsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Backfill-ExtensionsEntry&#34;&gt;Backfill.ExtensionsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Backfill-PersistentFieldEntry&#34;&gt;Backfill.PersistentFieldEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-DoubleRangeFilter&#34;&gt;DoubleRangeFilter&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Match&#34;&gt;Match&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Match-ExtensionsEntry&#34;&gt;Match.ExtensionsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-MatchProfile&#34;&gt;MatchProfile&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-MatchProfile-ExtensionsEntry&#34;&gt;MatchProfile.ExtensionsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Pool&#34;&gt;Pool&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-SearchFields&#34;&gt;SearchFields&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-SearchFields-DoubleArgsEntry&#34;&gt;SearchFields.DoubleArgsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-SearchFields-StringArgsEntry&#34;&gt;SearchFields.StringArgsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-StringEqualsFilter&#34;&gt;StringEqualsFilter&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-TagPresentFilter&#34;&gt;TagPresentFilter&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Ticket-ExtensionsEntry&#34;&gt;Ticket.ExtensionsEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-Ticket-PersistentFieldEntry&#34;&gt;Ticket.PersistentFieldEntry&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-DoubleRangeFilter-Exclude&#34;&gt;DoubleRangeFilter.Exclude&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#api_query-proto&#34;&gt;api/query.proto&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryBackfillsRequest&#34;&gt;QueryBackfillsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryBackfillsResponse&#34;&gt;QueryBackfillsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryTicketIdsRequest&#34;&gt;QueryTicketIdsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryTicketIdsResponse&#34;&gt;QueryTicketIdsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryTicketsRequest&#34;&gt;QueryTicketsRequest&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryTicketsResponse&#34;&gt;QueryTicketsResponse&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#openmatch-QueryService&#34;&gt;QueryService&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#scalar-value-types&#34;&gt;Scalar Value Types&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a name=&#34;api_backend-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apibackendproto-1&#34;&gt;api/backend.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AssignTicketsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignticketsrequest-1&#34;&gt;AssignTicketsRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;assignments&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AssignmentGroup&#34;&gt;AssignmentGroup&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Assignments is a list of assignment groups that contain assignment and the Tickets to which they should be applied.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AssignTicketsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignticketsresponse-1&#34;&gt;AssignTicketsResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;failures&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AssignmentFailure&#34;&gt;AssignmentFailure&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Failures is a list of all the Tickets that failed assignment along with the cause of failure.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AssignmentFailure&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignmentfailure-1&#34;&gt;AssignmentFailure&lt;/h3&gt;
&lt;p&gt;AssignmentFailure contains the id of the Ticket that failed the Assignment and the failure status.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cause&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AssignmentFailure-Cause&#34;&gt;AssignmentFailure.Cause&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AssignmentGroup&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignmentgroup-1&#34;&gt;AssignmentGroup&lt;/h3&gt;
&lt;p&gt;AssignmentGroup contains an Assignment and the Tickets to which it should be applied.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_ids&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;TicketIds is a list of strings representing Open Match generated Ids which apply to an Assignment.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;assignment&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Assignment&#34;&gt;Assignment&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An Assignment specifies game connection related information to be associated with the TicketIds.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-FetchMatchesRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;fetchmatchesrequest-1&#34;&gt;FetchMatchesRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;config&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-FunctionConfig&#34;&gt;FunctionConfig&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A configuration for the MatchFunction server of this FetchMatches call.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;profile&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-MatchProfile&#34;&gt;MatchProfile&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A MatchProfile that will be sent to the MatchFunction server of this FetchMatches call.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-FetchMatchesResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;fetchmatchesresponse-1&#34;&gt;FetchMatchesResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;match&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Match&#34;&gt;Match&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Match generated by the user-defined MMF with the specified MatchProfiles. A valid Match response will contain at least one ticket.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-FunctionConfig&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;functionconfig-1&#34;&gt;FunctionConfig&lt;/h3&gt;
&lt;p&gt;FunctionConfig specifies a MMF address and client type for Backend to establish connections with the MMF&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;host&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;port&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#int32&#34;&gt;int32&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;type&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-FunctionConfig-Type&#34;&gt;FunctionConfig.Type&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-ReleaseAllTicketsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;releaseallticketsrequest-1&#34;&gt;ReleaseAllTicketsRequest&lt;/h3&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-ReleaseAllTicketsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;releaseallticketsresponse-1&#34;&gt;ReleaseAllTicketsResponse&lt;/h3&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-ReleaseTicketsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;releaseticketsrequest-1&#34;&gt;ReleaseTicketsRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_ids&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;TicketIds is a list of string representing Open Match generated Ids to be re-enabled for MMF querying because they are no longer awaiting assignment from a previous match result&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-ReleaseTicketsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;releaseticketsresponse-1&#34;&gt;ReleaseTicketsResponse&lt;/h3&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AssignmentFailure-Cause&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignmentfailurecause-1&#34;&gt;AssignmentFailure.Cause&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Number&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNKNOWN&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TICKET_NOT_FOUND&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-FunctionConfig-Type&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;functionconfigtype-1&#34;&gt;FunctionConfig.Type&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Number&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GRPC&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;REST&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-BackendService&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;backendservice-1&#34;&gt;BackendService&lt;/h3&gt;
&lt;p&gt;The BackendService implements APIs to generate matches and handle ticket assignments.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method Name&lt;/th&gt;
&lt;th&gt;Request Type&lt;/th&gt;
&lt;th&gt;Response Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FetchMatches&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-FetchMatchesRequest&#34;&gt;FetchMatchesRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-FetchMatchesResponse&#34;&gt;FetchMatchesResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;FetchMatches triggers a MatchFunction with the specified MatchProfile and returns a set of matches generated by the Match Making Function, and accepted by the evaluator. Tickets in matches returned by FetchMatches are moved from active to pending, and will not be returned by query.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AssignTickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AssignTicketsRequest&#34;&gt;AssignTicketsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AssignTicketsResponse&#34;&gt;AssignTicketsResponse&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;AssignTickets overwrites the Assignment field of the input TicketIds.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ReleaseTickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-ReleaseTicketsRequest&#34;&gt;ReleaseTicketsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-ReleaseTicketsResponse&#34;&gt;ReleaseTicketsResponse&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;ReleaseTickets moves tickets from the pending state, to the active state. This enables them to be returned by query, and find different matches. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ReleaseAllTickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-ReleaseAllTicketsRequest&#34;&gt;ReleaseAllTicketsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-ReleaseAllTicketsResponse&#34;&gt;ReleaseAllTicketsResponse&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;ReleaseAllTickets moves all tickets from the pending state, to the active state. This enables them to be returned by query, and find different matches. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_evaluator-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apievaluatorproto-1&#34;&gt;api/evaluator.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-EvaluateRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;evaluaterequest-1&#34;&gt;EvaluateRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;match&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Match&#34;&gt;Match&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Matches proposed by the Match Function representing a candidate of the final results.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-EvaluateResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;evaluateresponse-1&#34;&gt;EvaluateResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;match_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Match ID representing a shortlisted match returned by the evaluator as the final result.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Evaluator&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;evaluator-1&#34;&gt;Evaluator&lt;/h3&gt;
&lt;p&gt;The Evaluator service implements APIs used to evaluate and shortlist matches proposed by MMFs.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method Name&lt;/th&gt;
&lt;th&gt;Request Type&lt;/th&gt;
&lt;th&gt;Response Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Evaluate&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-EvaluateRequest&#34;&gt;EvaluateRequest&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-EvaluateResponse&#34;&gt;EvaluateResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;Evaluate evaluates a list of proposed matches based on quality, collision status, and etc, then shortlist the matches and returns the final results.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_extensions-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apiextensionsproto-1&#34;&gt;api/extensions.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-DefaultEvaluationCriteria&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;defaultevaluationcriteria-1&#34;&gt;DefaultEvaluationCriteria&lt;/h3&gt;
&lt;p&gt;A DefaultEvaluationCriteria is used for a match&#39;s evaluation_input when using
the default evaluator.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;score&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#double&#34;&gt;double&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_frontend-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apifrontendproto-1&#34;&gt;api/frontend.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AcknowledgeBackfillRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;acknowledgebackfillrequest-1&#34;&gt;AcknowledgeBackfillRequest&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An existing ID of Backfill to acknowledge.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;assignment&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Assignment&#34;&gt;Assignment&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An updated Assignment of the requested Backfill.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-AcknowledgeBackfillResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;acknowledgebackfillresponse-1&#34;&gt;AcknowledgeBackfillResponse&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;The Backfill that was acknowledged.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;All of the Tickets that were successfully assigned&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-CreateBackfillRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;createbackfillrequest-1&#34;&gt;CreateBackfillRequest&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An empty Backfill object.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-CreateTicketRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;createticketrequest-1&#34;&gt;CreateTicketRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Ticket object with SearchFields defined.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-DeleteBackfillRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;deletebackfillrequest-1&#34;&gt;DeleteBackfillRequest&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An existing ID of Backfill to delete.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-DeleteTicketRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;deleteticketrequest-1&#34;&gt;DeleteTicketRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A TicketId of a generated Ticket to be deleted.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-GetBackfillRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;getbackfillrequest-1&#34;&gt;GetBackfillRequest&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An existing ID of Backfill to retrieve.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-GetTicketRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;getticketrequest-1&#34;&gt;GetTicketRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A TicketId of a generated Ticket.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-UpdateBackfillRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;updatebackfillrequest-1&#34;&gt;UpdateBackfillRequest&lt;/h3&gt;
&lt;p&gt;UpdateBackfillRequest - update searchFields, extensions and set assignment.&lt;/p&gt;
&lt;p&gt;BETA FEATURE WARNING: This Request message is not finalized and still subject
to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Backfill object with ID set and fields to update.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-WatchAssignmentsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;watchassignmentsrequest-1&#34;&gt;WatchAssignmentsRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ticket_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A TicketId of a generated Ticket to get updates on.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-WatchAssignmentsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;watchassignmentsresponse-1&#34;&gt;WatchAssignmentsResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;assignment&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Assignment&#34;&gt;Assignment&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An updated Assignment of the requested Ticket.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-FrontendService&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;frontendservice-1&#34;&gt;FrontendService&lt;/h3&gt;
&lt;p&gt;The FrontendService implements APIs to manage and query status of a Tickets.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method Name&lt;/th&gt;
&lt;th&gt;Request Type&lt;/th&gt;
&lt;th&gt;Response Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CreateTicket&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-CreateTicketRequest&#34;&gt;CreateTicketRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;CreateTicket assigns an unique TicketId to the input Ticket and record it in state storage. A ticket is considered as ready for matchmaking once it is created. - If a TicketId exists in a Ticket request, an auto-generated TicketId will override this field. - If SearchFields exist in a Ticket, CreateTicket will also index these fields such that one can query the ticket with query.QueryTickets function.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeleteTicket&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-DeleteTicketRequest&#34;&gt;DeleteTicketRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Empty&#34;&gt;.google.protobuf.Empty&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;DeleteTicket immediately stops Open Match from using the Ticket for matchmaking and removes the Ticket from state storage. The client should delete the Ticket when finished matchmaking with it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GetTicket&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-GetTicketRequest&#34;&gt;GetTicketRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;GetTicket get the Ticket associated with the specified TicketId.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WatchAssignments&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-WatchAssignmentsRequest&#34;&gt;WatchAssignmentsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-WatchAssignmentsResponse&#34;&gt;WatchAssignmentsResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;WatchAssignments stream back Assignment of the specified TicketId if it is updated. - If the Assignment is not updated, GetAssignment will retry using the configured backoff strategy.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AcknowledgeBackfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AcknowledgeBackfillRequest&#34;&gt;AcknowledgeBackfillRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-AcknowledgeBackfillResponse&#34;&gt;AcknowledgeBackfillResponse&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;AcknowledgeBackfill is used to notify OpenMatch about GameServer connection info This triggers an assignment process. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CreateBackfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-CreateBackfillRequest&#34;&gt;CreateBackfillRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;CreateBackfill creates a new Backfill object. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeleteBackfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-DeleteBackfillRequest&#34;&gt;DeleteBackfillRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Empty&#34;&gt;.google.protobuf.Empty&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;DeleteBackfill receives a backfill ID and deletes its resource. Any tickets waiting for this backfill will be returned to the active pool, no longer pending. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GetBackfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-GetBackfillRequest&#34;&gt;GetBackfillRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;GetBackfill returns a backfill object by its ID. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UpdateBackfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-UpdateBackfillRequest&#34;&gt;UpdateBackfillRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;UpdateBackfill updates search_fields and extensions for the backfill with the provided id. Any tickets waiting for this backfill will be returned to the active pool, no longer pending. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_matchfunction-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apimatchfunctionproto-1&#34;&gt;api/matchfunction.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-RunRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;runrequest-1&#34;&gt;RunRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;profile&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-MatchProfile&#34;&gt;MatchProfile&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A MatchProfile defines constraints of Tickets in a Match and shapes the Match proposed by the MatchFunction.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-RunResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;runresponse-1&#34;&gt;RunResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;proposal&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Match&#34;&gt;Match&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Proposal represents a Match candidate that satifies the constraints defined in the input Profile. A valid Proposal response will contain at least one ticket.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-MatchFunction&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;matchfunction-1&#34;&gt;MatchFunction&lt;/h3&gt;
&lt;p&gt;The MatchFunction service implements APIs to run user-defined matchmaking logics.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method Name&lt;/th&gt;
&lt;th&gt;Request Type&lt;/th&gt;
&lt;th&gt;Response Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Run&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-RunRequest&#34;&gt;RunRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-RunResponse&#34;&gt;RunResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;DO NOT CALL THIS FUNCTION MANUALLY. USE backend.FetchMatches INSTEAD. Run pulls Tickets that satisfy Profile constraints from QueryService, runs matchmaking logic against them, then constructs and streams back match candidates to the Backend service.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_messages-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apimessagesproto-1&#34;&gt;api/messages.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Assignment&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignment-1&#34;&gt;Assignment&lt;/h3&gt;
&lt;p&gt;An Assignment represents a game server assignment associated with a Ticket.
Open Match does not require or inspect any fields on assignment.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;connection&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Connection information for this Assignment.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;extensions&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Assignment-ExtensionsEntry&#34;&gt;Assignment.ExtensionsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be used by the match making function, evaluator, and components making calls to Open Match. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Assignment-ExtensionsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;assignmentextensionsentry-1&#34;&gt;Assignment.ExtensionsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Backfill&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;backfill-1&#34;&gt;Backfill&lt;/h3&gt;
&lt;p&gt;Represents a backfill entity which is used to fill partially full matches.&lt;/p&gt;
&lt;p&gt;BETA FEATURE WARNING:  This call and the associated Request and Response
messages are not finalized and still subject to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Id represents an auto-generated Id issued by Open Match.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;search_fields&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-SearchFields&#34;&gt;SearchFields&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Search fields are the fields which Open Match is aware of, and can be used when specifying filters.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;extensions&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill-ExtensionsEntry&#34;&gt;Backfill.ExtensionsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be used by the Match Function, evaluator, and components making calls to Open Match. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;persistent_field&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill-PersistentFieldEntry&#34;&gt;Backfill.PersistentFieldEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be kept persistent throughout the life-cycle of a backfill. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;create_time&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Timestamp&#34;&gt;google.protobuf.Timestamp&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Create time is the time the Ticket was created. It is populated by Open Match at the time of Ticket creation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;generation&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#int64&#34;&gt;int64&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Generation gets incremented on GameServers update operations. Prevents the MMF from overriding a newer version from the game server. Do NOT read or write to this field, it is for internal tracking, and changing the value will cause bugs.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Backfill-ExtensionsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;backfillextensionsentry-1&#34;&gt;Backfill.ExtensionsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Backfill-PersistentFieldEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;backfillpersistentfieldentry-1&#34;&gt;Backfill.PersistentFieldEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-DoubleRangeFilter&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;doublerangefilter-1&#34;&gt;DoubleRangeFilter&lt;/h3&gt;
&lt;p&gt;Filters numerical values to only those within a range.
double_arg: &amp;quot;foo&amp;quot;
max: 10
min: 5
matches:
{&amp;quot;foo&amp;quot;: 5}
{&amp;quot;foo&amp;quot;: 7.5}
{&amp;quot;foo&amp;quot;: 10}
does not match:
{&amp;quot;foo&amp;quot;: 4}
{&amp;quot;foo&amp;quot;: 10.01}
{&amp;quot;foo&amp;quot;: &amp;quot;7.5&amp;quot;}
{}&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;double_arg&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Name of the ticket&#39;s search_fields.double_args this Filter operates on.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;max&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#double&#34;&gt;double&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Maximum value.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;min&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#double&#34;&gt;double&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Minimum value.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exclude&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-DoubleRangeFilter-Exclude&#34;&gt;DoubleRangeFilter.Exclude&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Defines the bounds to apply when filtering tickets by their search_fields.double_args value. BETA FEATURE WARNING: This field and the associated values are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Match&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;match-1&#34;&gt;Match&lt;/h3&gt;
&lt;p&gt;A Match is used to represent a completed match object. It can be generated by
a MatchFunction as a proposal or can be returned by OpenMatch as a result in
response to the FetchMatches call.
When a match is returned by the FetchMatches call, it should contain at least
one ticket to be considered as valid.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;match_id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A Match ID that should be passed through the stack for tracing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;match_profile&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Name of the match profile that generated this Match.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;match_function&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Name of the match function that generated this Match.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Tickets belonging to this match.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;extensions&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Match-ExtensionsEntry&#34;&gt;Match.ExtensionsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be used by the match making function, evaluator, and components making calls to Open Match. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;backfill&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Backfill request which contains additional information to the match and contains an association to a GameServer. BETA FEATURE WARNING: This field is not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;allocate_gameserver&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#bool&#34;&gt;bool&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;AllocateGameServer signalise Director that Backfill is new and it should allocate a GameServer, this Backfill would be assigned. BETA FEATURE WARNING: This field is not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Match-ExtensionsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;matchextensionsentry-1&#34;&gt;Match.ExtensionsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-MatchProfile&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;matchprofile-1&#34;&gt;MatchProfile&lt;/h3&gt;
&lt;p&gt;A MatchProfile is Open Match&#39;s representation of a Match specification. It is
used to indicate the criteria for selecting players for a match. A
MatchProfile is the input to the API to get matches and is passed to the
MatchFunction. It contains all the information required by the MatchFunction
to generate match proposals.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;name&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Name of this match profile.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pools&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Pool&#34;&gt;Pool&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Set of pools to be queried when generating a match for this MatchProfile.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;extensions&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-MatchProfile-ExtensionsEntry&#34;&gt;MatchProfile.ExtensionsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be used by the match making function, evaluator, and components making calls to Open Match. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-MatchProfile-ExtensionsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;matchprofileextensionsentry-1&#34;&gt;MatchProfile.ExtensionsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Pool&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;pool-1&#34;&gt;Pool&lt;/h3&gt;
&lt;p&gt;Pool specfies a set of criteria that are used to select a subset of Tickets
that meet all the criteria.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;name&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A developer-chosen human-readable name for this Pool.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;double_range_filters&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-DoubleRangeFilter&#34;&gt;DoubleRangeFilter&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Set of Filters indicating the filtering criteria. Selected tickets must match every Filter.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;string_equals_filters&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-StringEqualsFilter&#34;&gt;StringEqualsFilter&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tag_present_filters&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-TagPresentFilter&#34;&gt;TagPresentFilter&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;created_before&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Timestamp&#34;&gt;google.protobuf.Timestamp&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;If specified, only Tickets created before the specified time are selected.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;created_after&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Timestamp&#34;&gt;google.protobuf.Timestamp&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;If specified, only Tickets created after the specified time are selected.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-SearchFields&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;searchfields-1&#34;&gt;SearchFields&lt;/h3&gt;
&lt;p&gt;Search fields are the fields which Open Match is aware of, and can be used
when specifying filters.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;double_args&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-SearchFields-DoubleArgsEntry&#34;&gt;SearchFields.DoubleArgsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Float arguments. Filterable on ranges.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;string_args&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-SearchFields-StringArgsEntry&#34;&gt;SearchFields.StringArgsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;String arguments. Filterable on equality.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tags&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Filterable on presence or absence of given value.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-SearchFields-DoubleArgsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;searchfieldsdoubleargsentry-1&#34;&gt;SearchFields.DoubleArgsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#double&#34;&gt;double&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-SearchFields-StringArgsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;searchfieldsstringargsentry-1&#34;&gt;SearchFields.StringArgsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-StringEqualsFilter&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;stringequalsfilter-1&#34;&gt;StringEqualsFilter&lt;/h3&gt;
&lt;p&gt;Filters strings exactly equaling a value.
string_arg: &amp;quot;foo&amp;quot;
value: &amp;quot;bar&amp;quot;
matches:
{&amp;quot;foo&amp;quot;: &amp;quot;bar&amp;quot;}
does not match:
{&amp;quot;foo&amp;quot;: &amp;quot;baz&amp;quot;}
{&amp;quot;bar&amp;quot;: &amp;quot;foo&amp;quot;}
{}&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;string_arg&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Name of the ticket&#39;s search_fields.string_args this Filter operates on.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-TagPresentFilter&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;tagpresentfilter-1&#34;&gt;TagPresentFilter&lt;/h3&gt;
&lt;p&gt;Filters to the tag being present on the search_fields.
tag: &amp;quot;foo&amp;quot;
matches:
[&amp;quot;foo&amp;quot;]
[&amp;quot;bar&amp;quot;,&amp;quot;foo&amp;quot;]
does not match:
[&amp;quot;bar&amp;quot;]
[]&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;tag&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Ticket&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;ticket-1&#34;&gt;Ticket&lt;/h3&gt;
&lt;p&gt;A Ticket is a basic matchmaking entity in Open Match. A Ticket may represent
an individual &#39;Player&#39;, a &#39;Group&#39; of players, or any other concepts unique to
your use case. Open Match will not interpret what the Ticket represents but
just treat it as a matchmaking unit with a set of SearchFields. Open Match
stores the Ticket in state storage and enables an Assignment to be set on the
Ticket.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;id&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Id represents an auto-generated Id issued by Open Match.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;assignment&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Assignment&#34;&gt;Assignment&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;An Assignment represents a game server assignment associated with a Ticket, or whatever finalized matched state means for your use case. Open Match does not require or inspect any fields on Assignment.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;search_fields&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-SearchFields&#34;&gt;SearchFields&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Search fields are the fields which Open Match is aware of, and can be used when specifying filters.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;extensions&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket-ExtensionsEntry&#34;&gt;Ticket.ExtensionsEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be used by the match making function, evaluator, and components making calls to Open Match. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;persistent_field&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket-PersistentFieldEntry&#34;&gt;Ticket.PersistentFieldEntry&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Customized information not inspected by Open Match, to be kept persistent throughout the life-cycle of a ticket. Optional, depending on the requirements of the connected systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;create_time&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Timestamp&#34;&gt;google.protobuf.Timestamp&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Create time is the time the Ticket was created. It is populated by Open Match at the time of Ticket creation.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Ticket-ExtensionsEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;ticketextensionsentry-1&#34;&gt;Ticket.ExtensionsEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-Ticket-PersistentFieldEntry&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;ticketpersistentfieldentry-1&#34;&gt;Ticket.PersistentFieldEntry&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;key&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#google-protobuf-Any&#34;&gt;google.protobuf.Any&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-DoubleRangeFilter-Exclude&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;doublerangefilterexclude-1&#34;&gt;DoubleRangeFilter.Exclude&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Number&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NONE&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;No bounds should be excluded when evaluating the filter, i.e.: MIN &amp;lt;= x &amp;lt;= MAX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIN&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Only the minimum bound should be excluded when evaluating the filter, i.e.: MIN &amp;lt; x &amp;lt;= MAX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAX&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Only the maximum bound should be excluded when evaluating the filter, i.e.: MIN &amp;lt;= x &amp;lt; MAX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BOTH&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Both bounds should be excluded when evaluating the filter, i.e.: MIN &amp;lt; x &amp;lt; MAX&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;api_query-proto&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&#34;right&#34;&gt;&lt;a href=&#34;#top&#34;&gt;Top&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;apiqueryproto-1&#34;&gt;api/query.proto&lt;/h2&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryBackfillsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;querybackfillsrequest-1&#34;&gt;QueryBackfillsRequest&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING:  This Request messages are not finalized and
still subject to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;pool&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Pool&#34;&gt;Pool&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;The Pool representing the set of Filters to be queried.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryBackfillsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;querybackfillsresponse-1&#34;&gt;QueryBackfillsResponse&lt;/h3&gt;
&lt;p&gt;BETA FEATURE WARNING:  This Request messages are not finalized and
still subject to possible change or removal.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;backfills&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Backfill&#34;&gt;Backfill&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Backfills that meet all the filtering criteria requested by the pool.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryTicketIdsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;queryticketidsrequest-1&#34;&gt;QueryTicketIdsRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;pool&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Pool&#34;&gt;Pool&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;The Pool representing the set of Filters to be queried.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryTicketIdsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;queryticketidsresponse-1&#34;&gt;QueryTicketIdsResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ids&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#string&#34;&gt;string&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;TicketIDs that meet all the filtering criteria requested by the pool.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryTicketsRequest&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;queryticketsrequest-1&#34;&gt;QueryTicketsRequest&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;pool&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Pool&#34;&gt;Pool&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;The Pool representing the set of Filters to be queried.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryTicketsResponse&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;queryticketsresponse-1&#34;&gt;QueryTicketsResponse&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;tickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-Ticket&#34;&gt;Ticket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;repeated&lt;/td&gt;
&lt;td&gt;Tickets that meet all the filtering criteria requested by the pool.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a name=&#34;openmatch-QueryService&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;queryservice-1&#34;&gt;QueryService&lt;/h3&gt;
&lt;p&gt;The QueryService service implements helper APIs for Match Function to query Tickets from state storage.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method Name&lt;/th&gt;
&lt;th&gt;Request Type&lt;/th&gt;
&lt;th&gt;Response Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;QueryTickets&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryTicketsRequest&#34;&gt;QueryTicketsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryTicketsResponse&#34;&gt;QueryTicketsResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;QueryTickets gets a list of Tickets that match all Filters of the input Pool. - If the Pool contains no Filters, QueryTickets will return all Tickets in the state storage. QueryTickets pages the Tickets by &lt;code&gt;queryPageSize&lt;/code&gt; and stream back responses. - queryPageSize is default to 1000 if not set, and has a minimum of 10 and maximum of 10000.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QueryTicketIds&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryTicketIdsRequest&#34;&gt;QueryTicketIdsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryTicketIdsResponse&#34;&gt;QueryTicketIdsResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;QueryTicketIds gets the list of TicketIDs that meet all the filtering criteria requested by the pool. - If the Pool contains no Filters, QueryTicketIds will return all TicketIDs in the state storage. QueryTicketIds pages the TicketIDs by &lt;code&gt;queryPageSize&lt;/code&gt; and stream back responses. - queryPageSize is default to 1000 if not set, and has a minimum of 10 and maximum of 10000.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QueryBackfills&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryBackfillsRequest&#34;&gt;QueryBackfillsRequest&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;#openmatch-QueryBackfillsResponse&#34;&gt;QueryBackfillsResponse&lt;/a&gt; stream&lt;/td&gt;
&lt;td&gt;QueryBackfills gets a list of Backfills. BETA FEATURE WARNING: This call and the associated Request and Response messages are not finalized and still subject to possible change or removal.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;scalar-value-types-1&#34;&gt;Scalar Value Types&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;.proto Type&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;C++&lt;/th&gt;
&lt;th&gt;Java&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;th&gt;Go&lt;/th&gt;
&lt;th&gt;C#&lt;/th&gt;
&lt;th&gt;PHP&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;double&#34; /&gt; double&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;double&lt;/td&gt;
&lt;td&gt;double&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;float64&lt;/td&gt;
&lt;td&gt;double&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;Float&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;float&#34; /&gt; float&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;float32&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;Float&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;int32&#34; /&gt; int32&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;int64&#34; /&gt; int64&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;integer/string&lt;/td&gt;
&lt;td&gt;Bignum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;uint32&#34; /&gt; uint32&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding.&lt;/td&gt;
&lt;td&gt;uint32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;uint32&lt;/td&gt;
&lt;td&gt;uint&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;uint64&#34; /&gt; uint64&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding.&lt;/td&gt;
&lt;td&gt;uint64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;uint64&lt;/td&gt;
&lt;td&gt;ulong&lt;/td&gt;
&lt;td&gt;integer/string&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;sint32&#34; /&gt; sint32&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;sint64&#34; /&gt; sint64&lt;/td&gt;
&lt;td&gt;Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;integer/string&lt;/td&gt;
&lt;td&gt;Bignum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;fixed32&#34; /&gt; fixed32&lt;/td&gt;
&lt;td&gt;Always four bytes. More efficient than uint32 if values are often greater than 2^28.&lt;/td&gt;
&lt;td&gt;uint32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;uint32&lt;/td&gt;
&lt;td&gt;uint&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;fixed64&#34; /&gt; fixed64&lt;/td&gt;
&lt;td&gt;Always eight bytes. More efficient than uint64 if values are often greater than 2^56.&lt;/td&gt;
&lt;td&gt;uint64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;uint64&lt;/td&gt;
&lt;td&gt;ulong&lt;/td&gt;
&lt;td&gt;integer/string&lt;/td&gt;
&lt;td&gt;Bignum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;sfixed32&#34; /&gt; sfixed32&lt;/td&gt;
&lt;td&gt;Always four bytes.&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;int32&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;Bignum or Fixnum (as required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;sfixed64&#34; /&gt; sfixed64&lt;/td&gt;
&lt;td&gt;Always eight bytes.&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;int/long&lt;/td&gt;
&lt;td&gt;int64&lt;/td&gt;
&lt;td&gt;long&lt;/td&gt;
&lt;td&gt;integer/string&lt;/td&gt;
&lt;td&gt;Bignum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;bool&#34; /&gt; bool&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;TrueClass/FalseClass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;string&#34; /&gt; string&lt;/td&gt;
&lt;td&gt;A string must always contain UTF-8 encoded or 7-bit ASCII text.&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;str/unicode&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;String (UTF-8)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a name=&#34;bytes&#34; /&gt; bytes&lt;/td&gt;
&lt;td&gt;May contain any arbitrary sequence of bytes.&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;ByteString&lt;/td&gt;
&lt;td&gt;str&lt;/td&gt;
&lt;td&gt;[]byte&lt;/td&gt;
&lt;td&gt;ByteString&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;String (ASCII-8BIT)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Step 2 - Build your own Director</title>
      <link>/site/docs/tutorials/matchmaker101/director/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/tutorials/matchmaker101/director/</guid>
      <description>
        
        
        &lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;The Director is a backend component in the Online Game Service that typically performs the following tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fetch Matches from Open Match for each MatchProfile.&lt;/li&gt;
&lt;li&gt;Fetch game allocations from a DGS (Dedicated Game Server) system.&lt;/li&gt;
&lt;li&gt;Establish connections from players to game servers and set Assignments based on connections in Open Match.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The tutorial provides a very basic Director scaffold &lt;code&gt;$TUTORIALROOT/director&lt;/code&gt; that generates some MatchProfiles and then call FetchMatches for these profiles from Open Match. The director then sets Assignment to a fake connection string to simulate a DGS allocation for every Ticket in a generated match.&lt;/p&gt;
&lt;h2 id=&#34;links-to-api-definitions-for-this-tutorial&#34;&gt;Links to API Definitions for this tutorial&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#match&#34;&gt;pb.Match&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#matchprofile&#34;&gt;pb.MatchProfile&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#openmatch.FunctionConfig&#34;&gt;pb.FunctionConfig&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#frontend&#34;&gt;backend.AssignTickets&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#frontend&#34;&gt;backend.FetchMatches&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;/table&gt;
&lt;h2 id=&#34;make-changes&#34;&gt;Make Changes&lt;/h2&gt;
&lt;p&gt;The Director uses a helper function &lt;code&gt;generateProfiles()&lt;/code&gt; in &lt;code&gt;$TUTORIALROOT/director/profile.go&lt;/code&gt; to generate MatchProfiles. For this tutorial, we will generate a MatchProfile for each game-mode. The MatchProfile will have a single Pool that has a single filtering criterion searching for the desired game-mode. Director will call FetchMatches for each of the generated Profiles. Below is a sample snippet to achieve this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;generateProfiles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;MatchProfile&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;profiles&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;MatchProfile&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;modes&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;mode.demo&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;mode.ctf&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;mode.battleroyale&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mode&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;range&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;modes&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;profiles&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;append&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;profiles&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;MatchProfile&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;Name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;mode_based_profile_&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mode&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;Pools&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Pool&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
          &lt;span style=&#34;color:#000&#34;&gt;Name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;pool_mode_&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mode&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
          &lt;span style=&#34;color:#000&#34;&gt;TagPresentFilters&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;TagPresentFilter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
              &lt;span style=&#34;color:#000&#34;&gt;Tag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mode&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
          &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;

  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;profiles&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Please copy the above helper or add your own profile generation logic to &lt;code&gt;$TUTORIALROOT/director/profiles.go&lt;/code&gt;. Also, you may tweak the profile polling interval, Assignment logic, etc. in &lt;code&gt;$TUTORIALROOT/director/main.go&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;configuring&#34;&gt;Configuring&lt;/h3&gt;
&lt;p&gt;The following values need to be changed if your setup is different from the default in the &lt;code&gt;TUTORIALROOT/director/main.go&lt;/code&gt;. The default value assumes you have Open Match deployed under &lt;code&gt;open-match&lt;/code&gt; namespace and the Game Frontend under &lt;code&gt;mm101-tutorial&lt;/code&gt; namespace in the same cluster:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;omBackendEndpoint&lt;/code&gt; - Open Match Backend endpoint&lt;/p&gt;
&lt;p&gt;&lt;code&gt;functionHostName&lt;/code&gt; - Kubernetes Internal Hostname of your Match Function&lt;/p&gt;
&lt;p&gt;&lt;code&gt;functionPort&lt;/code&gt; - Port Number that you host your Match Function service on&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;build-and-push&#34;&gt;Build and Push&lt;/h2&gt;
&lt;p&gt;Now that you have customized the Director, please run the below commands from &lt;code&gt;$TUTORIALROOT&lt;/code&gt; to build a new image and push it to your configured image registry.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-cmd&#34; data-lang=&#34;cmd&#34;&gt;# Build the Director image.
docker build -t $REGISTRY/mm101-tutorial-director director/

# Push the Director image to the configured Registry.
docker push $REGISTRY/mm101-tutorial-director
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s Next&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s proceed to build the &lt;a href=&#34;/site/site/docs/tutorials/matchmaker101/matchfunction/&#34;&gt;Match Function&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Glossary</title>
      <link>/site/docs/reference/glossary/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/reference/glossary/</guid>
      <description>
        
        
        &lt;p&gt;&lt;strong&gt;Docker Image&lt;/strong&gt; &lt;a href=&#34;/site/site/docs/tutorials/matchmaker101/frontend/#build-and-push&#34;&gt;See in Action&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Docker Images are sort of like a zip file that would contain your game binary and assets.
It also contains a minimal operating system (~2-10MiB), environment variables, and other contexts.&lt;/p&gt;
&lt;p&gt;The intent is that the image is portable between host machines (that can run different host OSes)
but the application itself will run the same because all of its dependencies (ex: glibc, DLLs, etc)
included without the need for virtualization. Docker Images are stored in Docker Image
Repositories and are versioned.&lt;/p&gt;
&lt;p&gt;Open Match uses &lt;a href=&#34;https://github.com/GoogleContainerTools/distroless&#34;&gt;distroless/static:nonroot&lt;/a&gt;
images that provide just enough Linux OS to run a mostly-static binary. There are other flavors
of distroless for popular languages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.docker.com/engine/docker-overview/&#34;&gt;Docker&lt;/a&gt; is what generally mean when they say
&amp;ldquo;containers&amp;rdquo;. It allows you to run Docker Images on a host operating system. Containers provide
a thin layer of isolation between the host and the application that makes it think it is running
in its environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You give &lt;a href=&#34;https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/&#34;&gt;Kubernetes&lt;/a&gt;
a bunch of servers to run and it&amp;rsquo;ll figure out how where to run them based on available
resources. The machines can be different shapes and sizes. You can declare how much CPU
and RAM a container may consume before it&amp;rsquo;s throttled or killed respectively.&lt;/p&gt;
&lt;p&gt;Kubernetes also provides a configurable private network that by default servers cannot
communicate outside the network. It&amp;rsquo;s possible to open up ports through
&lt;a href=&#34;https://kubernetes.io/docs/concepts/services-networking/service/&#34;&gt;Service&lt;/a&gt; definitions.&lt;/p&gt;
&lt;p&gt;Lastly, it provides configuration management including secrets
(like passwords and auth tokens) and auto-healing (service health monitoring and restart).&lt;/p&gt;
&lt;p&gt;Open Match uses Kubernetes to schedule and runs its services. It also uses secrets to
hold TLS certificates and Redis passwords.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Helm&lt;/strong&gt; &lt;a href=&#34;/site/site/docs/installation/helm/&#34;&gt;See in Action&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://helm.sh/&#34;&gt;Helm&lt;/a&gt; is the Kubernetes package manager. It allows you to create
Kubernetes deployments as templates and parameters. Helm deployments are called charts.
For example, you can create an Open Match deployment that has 50 frontend servers via
&lt;code&gt;--set frontend.replicas=50&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Open Match uses Helm to simplify its Kubernetes deployment. By default, the Helm chart
deploys Redis, Open Match, Prometheus, and Grafana.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Helm is not required for Open Match.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Terraform&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.terraform.io/intro#what-is-terraform&#34;&gt;Terraform&lt;/a&gt; provides
a way to express your
&lt;a href=&#34;https://en.wikipedia.org/wiki/Infrastructure_as_code&#34;&gt;infrastructure-as-code&lt;/a&gt;.
In other words, you can write a template that says &amp;ldquo;give me 20 machines each with
4 vCPUs and 32 GiB RAM that live in us-west1-b on the same network in GCP&amp;rdquo; and
Terraform will make that happen. You can then change your configuration to have 25
machines and Terraform will add the additional 5.&lt;/p&gt;
&lt;p&gt;Open Match does not use Terraform. We provide an example of a Terraform template that
can be used to declare infrastructure you&amp;rsquo;d need to run it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Terraform is not required for Open Match.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Match Function</title>
      <link>/site/docs/guides/matchmaker/matchfunction/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/guides/matchmaker/matchfunction/</guid>
      <description>
        
        
        &lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;The Match Function is the component that implements the core matchmaking logic. A Match Function receives a MatchProfile as input should return matches for this MatchProfile.&lt;/p&gt;
&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;
&lt;p&gt;A Match Function is a GRPC or HTTP service that implements the Match Function definition prescribed by Open Match.&lt;/p&gt;
&lt;h3 id=&#34;definition&#34;&gt;Definition&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;rpc&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Run&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;RunRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;returns&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;stream&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;RunResponse&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;option&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;google.api.http&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;post&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/v1/matchfunction:run&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;body&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;message&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;RunRequest&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;MatchProfile&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;profile&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;message&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;RunResponse&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;Match&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;proposal&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This method is triggered at runtime whenever a FetchMatches call is received by Open Match Backend for a MatchProfile. At a high level, here is what a Match Function typically should do:&lt;/p&gt;
&lt;h4 id=&#34;query-tickets&#34;&gt;Query Tickets&lt;/h4&gt;
&lt;p&gt;The MatchProfile that the Match Function receives has a set of Pools specified. Typically, the Match Function will call into Open Match to fetch all the Tickets belonging to each of the pools in the Match function. This can be done using the following API exposed by the Open Match QueryService:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-proto&#34; data-lang=&#34;proto&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;rpc&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;QueryTickets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;QueryTicketsRequest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;returns&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;stream&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;QueryTicketsResponse&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;option&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;google.api.http&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;post&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/v1/queryservice/tickets:query&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;body&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Given that this functionality will be most commonly required for Match Functions, Open Match provides a golang library (&amp;ldquo;open-match.dev/open-match/pkg/matchfunction&amp;rdquo;) to abstract this logic:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;QueryPools&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ctx&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;context&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Context&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mml&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;QueryServiceClient&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;pools&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Pool&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;map&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;][]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Ticket&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;generate-match-proposals&#34;&gt;Generate Match Proposals&lt;/h4&gt;
&lt;p&gt;Now that we have the Tickets belonging to each pool, the Match Function can group them into matches as per the game&amp;rsquo;s requirements. Note that each Ticket with all its SearchFields and extensions are available to the Match Function. Once the proposals are generated, they are streamed back to Open Match.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Step 3 - Build your own Match Function</title>
      <link>/site/docs/tutorials/matchmaker101/matchfunction/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/tutorials/matchmaker101/matchfunction/</guid>
      <description>
        
        
        &lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;The MatchFunction is a service that implements the core matchmaking logic. A MatchFunction accepts a MatchProfile and should return Match proposals for this MatchProfile. The MatchFunction typically performs the following tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Queries Tickets for each Pool in the MatchProfile (Open Match provides a helper library for this).&lt;/li&gt;
&lt;li&gt;Uses these Tickets to generate Proposals (The MatchProfile can also describe the shape of a match using the Roster Field).&lt;/li&gt;
&lt;li&gt;Streams the Proposals back to Open Match.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The tutorial provides a very basic MatchFunction scaffold &lt;code&gt;$TUTORIALROOT/matchfunction&lt;/code&gt; that simply groups the filtered tickets into Proposals of a configurable number of players.&lt;/p&gt;
&lt;h2 id=&#34;links-to-api-definitions-for-this-tutorial&#34;&gt;Links to API Definitions for this tutorial&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#pool&#34;&gt;pb.Pool&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#matchprofile&#34;&gt;pb.MatchProfile&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#match&#34;&gt;pb.Match&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;&lt;a href=&#34;/site/site/docs/reference/api/#matchfunction&#34;&gt;matchfunction.Run&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;/table&gt;
&lt;h2 id=&#34;make-changes&#34;&gt;Make Changes&lt;/h2&gt;
&lt;p&gt;The MatchFunction scaffolding creates a gRPC service that implements the interface prescribed by Open Match for MatchFunctions. It integrates with Open Match library to Query the Tickets for the given MatchProfile and has logic to stream proposals back to Open Match. It uses a helper function &lt;code&gt;makeMatches()&lt;/code&gt; that accepts a map of Pool names to Tickets in that Pool and returns Match proposals. For this tutorial, the MatchProfile passed into the MatchFunction has a single Pool that filters Tickets for a game-mode. Thus the &lt;code&gt;makeMatches()&lt;/code&gt; receives a Pool with Tickets belonging to a game-mode and groups these Tickets into matches till it runs out of Tickets. Below is a sample snippet to achieve this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;makeMatches&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;MatchProfile&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;poolTickets&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;map&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;][]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Ticket&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;([]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Match&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;matches&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Match&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;count&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;
  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;insufficientTickets&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;matchTickets&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Ticket&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{}&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;pool&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;tickets&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;range&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;poolTickets&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;len&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tickets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ticketsPerPoolPerMatch&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
        &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// This pool is completely drained out. Stop creating matches.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#000&#34;&gt;insufficientTickets&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;
        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;break&lt;/span&gt;
      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;

      &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Remove the Tickets from this pool and add to the match proposal.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;      &lt;span style=&#34;color:#000&#34;&gt;matchTickets&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;append&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;matchTickets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;tickets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ticketsPerPoolPerMatch&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;...&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;poolTickets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pool&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;tickets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ticketsPerPoolPerMatch&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:]&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;

    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;insufficientTickets&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;break&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;

    &lt;span style=&#34;color:#000&#34;&gt;matches&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;append&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;matches&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;pb&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Match&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;MatchId&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;       &lt;span style=&#34;color:#000&#34;&gt;fmt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Sprintf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;profile-%v-time-%v-%v&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GetName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(),&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;time&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Now&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;().&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2006-01-02T15:04:05.00&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;MatchProfile&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GetName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(),&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;MatchFunction&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;matchName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;Tickets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;       &lt;span style=&#34;color:#000&#34;&gt;matchTickets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;

    &lt;span style=&#34;color:#000&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;++&lt;/span&gt;
  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;

  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;matches&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Please copy the above helper or add your own matchmaking logic to &lt;code&gt;$TUTORIALROOT/matchfunction/mmf/matchfunction.go&lt;/code&gt;. Also, you may change the number of Tickets per match to observe its impact on the matchmaker run.&lt;/p&gt;
&lt;h3 id=&#34;configuring&#34;&gt;Configuring&lt;/h3&gt;
&lt;p&gt;The following values need to be changed if your setup is different from the default in the &lt;code&gt;$TUTORIALROOT/frontend/main.go&lt;/code&gt;. The default value assumes you have Open Match deployed under &lt;code&gt;open-match&lt;/code&gt; namespace and the Game Frontend under &lt;code&gt;mm101-tutorial&lt;/code&gt; namespace in the same cluster:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;queryServiceAddress&lt;/code&gt; - Open Match QueryService endpoint&lt;/p&gt;
&lt;p&gt;&lt;code&gt;serverPort&lt;/code&gt; - Port Number that you host your Match Function service on, needs to be consistent with &lt;code&gt;functionPort&lt;/code&gt; in the director. The current value uses the port specified in deployment YAML (covered later in the Deploy and Run step)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;build-and-push&#34;&gt;Build and Push&lt;/h2&gt;
&lt;p&gt;Now that you have customized the MatchFunction, please run the below commands from &lt;code&gt;$TUTORIALROOT&lt;/code&gt; to build a new image and push it to your configured image registry.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-cmd&#34; data-lang=&#34;cmd&#34;&gt;# Build the MatchFunction image.
docker build -t $REGISTRY/mm101-tutorial-matchfunction matchfunction/

# Push the MatchFunction image to the configured Registry.
docker push $REGISTRY/mm101-tutorial-matchfunction
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s proceed to the next step to &lt;a href=&#34;/site/site/docs/tutorials/matchmaker101/deploy/&#34;&gt;Deploy and Run the Matchmaker&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Presentations</title>
      <link>/site/docs/reference/presentations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/reference/presentations/</guid>
      <description>
        
        
        &lt;p&gt;&lt;strong&gt;Connecting Millions with GCP and Open Match in a Google Doodle Multiplayer Game (GDC &amp;lsquo;19)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=9Iolrk6GH4w&#34;&gt;https://www.youtube.com/watch?v=9Iolrk6GH4w&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To celebrate this past Halloween, the Google Doodle team wanted to create their first multiplayer
Doodle, which would be accessed by millions of Google search page visitors over 3 days. To achieve
this scale, the Doodle team worked closely with GCP and leveraged the Google Cloud and Unity
co-founded open source matchmaking framework, Open Match. In this session, they will discuss
how they successfully executed this multiplayer experience.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unity Berlin 2018 - The Future of Matchmaking with Unity and Google&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=qasAmy_ko2o&#34;&gt;https://www.youtube.com/watch?v=qasAmy_ko2o&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Matchmaking is an essential component of today’s most popular multiplayer games.
Unity is helping to lead a new open-source project designed to tackle this common and
challenging aspect of multiplayer game creation. Learn how it works and how you can get involved.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Matchmaking Innovation &amp;amp; Best Practices with Unity (GDC &amp;lsquo;19)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=44gqtGRXmrg&#34;&gt;https://www.youtube.com/watch?v=44gqtGRXmrg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Creating a multiplayer game? You&amp;rsquo;re going to need matchmaking! Google Cloud and Unity have been
leading a new open source matchmaking project that&amp;rsquo;s extensible and scalable to millions of
players. In this session, learn how Open Match works and how to innovate using standard
matchmaking techniques, patterns, and best practices. Then, learn how Open Match is even more
approachable and useful when combined with Unity&amp;rsquo;s game server hosting technology.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Step 4 - Deploy and Run</title>
      <link>/site/docs/tutorials/matchmaker101/deploy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/tutorials/matchmaker101/deploy/</guid>
      <description>
        
        
        &lt;p&gt;This step assumes that you have completed the Tutorial prerequisites and all prior steps and have the Game Frontend, Director and Match Function built and pushed to your configured image registry. If you have done all of this, let&amp;rsquo;s proceed.&lt;/p&gt;
&lt;h2 id=&#34;deploy-the-match-function-game-frontend-director&#34;&gt;Deploy the Match Function, Game Frontend, Director&lt;/h2&gt;
&lt;p&gt;The next step is to deploy the Match Function, the Game Frontend and the Director to the same cluster as Open Match deployment but to a different namespace. The &lt;code&gt;$TUTORIALROOT/matchmaker.yaml&lt;/code&gt; deploys these components to a &lt;code&gt;mm101-tutorial&lt;/code&gt; namespace. Run the below command in the &lt;code&gt;$TUTORIALROOT&lt;/code&gt; path to apply this YAML:&lt;/p&gt;
&lt;p&gt;For GKE users, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-cmd&#34; data-lang=&#34;cmd&#34;&gt;sed &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;s|REGISTRY_PLACEHOLDER|$REGISTRY|g&amp;#34;&lt;/span&gt; matchmaker.yaml &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; kubectl apply -f -
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For Minikube users, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-cmd&#34; data-lang=&#34;cmd&#34;&gt;# Instructs Minikube to use local images
# https://kubernetes.io/docs/setup/learning-environment/minikube/#use-local-images-by-re-using-the-docker-daemon
eval $(minikube docker-env)
sed &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;s|REGISTRY_PLACEHOLDER|$REGISTRY|g&amp;#34;&lt;/span&gt; matchmaker.yaml &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; sed &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;s|Always|Never|g&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; kubectl apply -f -
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;matchmaking-ever-after&#34;&gt;Matchmaking ever after&lt;/h2&gt;
&lt;p&gt;All the components authored in this tutorial simply log their progress. Thus to see the progress, please check the logs for the below pods. Below are the commands and the expected output:&lt;/p&gt;
&lt;h3 id=&#34;game-frontend&#34;&gt;Game Frontend&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl logs -n mm101-tutorial pod/mm101-tutorial-frontend
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;# Sample Expected Output
2019/11/07 17:44:45 Ticket created successfully, id: bn25g39sm0mrm8pkpssg
2019/11/07 17:44:45 Ticket created successfully, id: bn25g39sm0mrm8pkpst0
2019/11/07 17:44:45 Ticket bn25g0psm0mrm8pkpr70 got assignment connection:&amp;quot;3.195.34.194:2222&amp;quot;
2019/11/07 17:44:45 Ticket bn25g0psm0mrm8pkpr7g got assignment connection:&amp;quot;207.123.239.153:2222&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;director&#34;&gt;Director&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl logs -n mm101-tutorial pod/mm101-tutorial-director
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;# Output
2019/11/07 17:45:15 Generated 16 matches for profile mode_based_profile
2019/11/07 17:45:15 Assigned server 217.7.41.62:2222 to match profile-mode_based_profile-time-2019-11-07T17:45:10.53-0
2019/11/07 17:45:15 Assigned server 210.183.191.233:2222 to match profile-mode_based_profile-time-2019-11-07T17:45:10.53-1
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;match-function&#34;&gt;Match Function&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl logs -n mm101-tutorial pod/mm101-tutorial-matchfunction
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;# Output
2019/11/07 17:45:45 Generating proposals for function mode_based_profile
2019/11/07 17:45:45 Streaming 5 proposals to Open Match
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;cleanup&#34;&gt;Cleanup&lt;/h2&gt;
&lt;p&gt;To remove the tutorial and its custom components, here is the command you need to run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;kubectl delete namespace mm101-tutorial
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will delete all the components deployed in this tutorial. Open Match core in open-match namespace can then be reused for other exercises but you will need to re-customize it.&lt;/p&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s Next&lt;/h2&gt;
&lt;p&gt;Now that you have created your own basic Matchmaker, lets run the next tutorial to &lt;a href=&#34;/site/site/docs/tutorials/matchmaker102/&#34;&gt;add new matchmaking criteria&lt;/a&gt; to this Matchmaker.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Documentation Editing and Contribution</title>
      <link>/site/docs/contribute/documentation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/site/docs/contribute/documentation/</guid>
      <description>
        
        
        &lt;p&gt;Editing the documentation is pretty simple if you are familiar with &lt;a href=&#34;https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet&#34;&gt;Markdown&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;simple-edits&#34;&gt;Simple Edits&lt;/h2&gt;
&lt;p&gt;If you want to make simple edits to a page (changes that do not require formatting or images) and you&amp;rsquo;re not an approver.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the &lt;code&gt;Edit this page&lt;/code&gt; link at the top right of the documentation page you want to edit.&lt;/li&gt;
&lt;li&gt;You&amp;rsquo;ll be redirected to an editor, make your changes there and click &lt;code&gt;Propose file change&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Your changes will be reviewed, make any adjustments and submit.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;advanced-edits&#34;&gt;Advanced Edits&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re adding a new page, changing the landing page, or making substantial changes.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check out the repository.&lt;/li&gt;
&lt;li&gt;Create a branch via &lt;code&gt;git checkout -b mychange upstream/master&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make run-site&lt;/code&gt; to start the webserver. It&amp;rsquo;ll be hosted on http://localhost:8080/.&lt;/li&gt;
&lt;li&gt;Open your favorite editor and navigate to the documentation which is stored at &lt;code&gt;$(REPOSITORY_ROOT)/site/content/en/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make your changes and run &lt;code&gt;git commit -m&lt;/code&gt; and &lt;code&gt;git push&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Follow the GitHub Pull Request workflow to submit your changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;platform&#34;&gt;Platform&lt;/h2&gt;
&lt;p&gt;This site and documentation are built with a combination of Hugo, static site generator,
with the Docsy theme for open source documentation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/documentation/&#34;&gt;Hugo Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/google/docsy&#34;&gt;Docsy Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/wjdp/htmltest&#34;&gt;Link Checker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
  </channel>
</rss>
