{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-mms-api-v2/sidebars.yaml","api-docs-mms-api-v2/apis/mms-v2.json":"api-docs-mms-api-v2/apis/mms-v2.json"},"props":{"metadata":{"markdoc":{"tagList":["admonition","openapi-code-sample"]},"type":"markdown"},"seo":{"title":"NFC Assignment","description":"Gateway to technical documentation for EGYM Platform."},"dynamicMarkdocComponents":["openapi"],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"nfc-assignment","__idx":0},"children":["NFC Assignment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide explains how to manage NFC token assignments for EGYM accounts using the MMS API V2."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"introduction","__idx":1},"children":["Introduction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The fitness industry is adopting NFC technology for access control to facilities, equipment and other functions. This is driven by the demand for improved member experiences and operational efficiency."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We've introduced an API to manage NFC assignments to enable our customers to unlock EGYM and connected partner machines."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"scenario","__idx":2},"children":["Scenario"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["NFC pass is issued by a partner (e.g. MMS or customer's mobile app). Partner assigns an NFC token to the member's EGYM account so it could be used to log into EGYM machines."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"preconditions","__idx":3},"children":["Preconditions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Partner provides the following information to EGYM"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Pass Type ID for Apple Wallet NFC pass. Note that Apple Pass Type ID is issued per customer app that is managed by an Apple Developer account."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Collector ID and Key version for Google Wallet NFC pass."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["NFC Pass payload examples for Apple and Google Wallets."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Private Key that is needed for EGYM machine to decrypt the NFC pass data that the phone sends."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"One token per NFC Pass issuer"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A member can have only one unique token per NFC Pass issuer. If a member uses two phones (iOS and Android), the NFC token must be the same for both."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"detailed-flow","__idx":4},"children":["Detailed flow"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Member creates NFC pass in the gym mobile app"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Partner back-end assigns NFC pass token to member's EGYM account via MMS API"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Member comes to EGYM Machine and taps with the phone to login"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["EGYM Machine shouts: ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["\"Any ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pass.com.partner"]}," passes here?\""]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Phone finds the pass: ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["\"Yes, I have one!\""]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Phone takes NFC message and encrypts it using the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Public Key"]}," inside the pass, and sends it to the machine"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["EGYM Machine uses ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Private Key"]}," to decrypt the message"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["EGYM Machine looks up the EGYM account that is associated with the given token and NFC pass issuer"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"assign-nfc","__idx":5},"children":["Assign NFC"]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"api-docs-mms-api-v2/apis/mms-v2.json","operationId":"assignAccountNfcToken","parameters":{},"environments":{},"codeSamplesResolved":[{"lang":"shell","title":"curl","source":"curl -i -X PUT \\\n  'https://mms.api.ed.ts.egym.coffee/api/v2/accounts/{accountId}/nfc' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"collectorId\": 0,\n    \"passTypeId\": \"string\",\n    \"token\": \"deadbeefcafebabe\"\n  }'"},{"lang":"javascript","title":"JavaScript","source":"const accountId = 'YOUR_accountId_PARAMETER';\nconst resp = await fetch(\n  `https://mms.api.ed.ts.egym.coffee/api/v2/accounts/${accountId}/nfc`,\n  {\n    method: 'PUT',\n    headers: {\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({\n      collectorId: 0,\n      passTypeId: 'string',\n      token: 'deadbeefcafebabe'\n    })\n  }\n);\n\nif (resp.status === 204) {\n  console.log('success');\n} else {\n  const data = await resp.json();\n  console.log(data);\n}"},{"lang":"javascript","title":"Node.js","source":"import fetch from 'node-fetch';\n\nasync function run() {\n  const accountId = 'YOUR_accountId_PARAMETER';\n  const resp = await fetch(\n    `https://mms.api.ed.ts.egym.coffee/api/v2/accounts/${accountId}/nfc`,\n    {\n      method: 'PUT',\n      headers: {\n        'Content-Type': 'application/json'\n      },\n      body: JSON.stringify({\n        collectorId: 0,\n        passTypeId: 'string',\n        token: 'deadbeefcafebabe'\n      })\n    }\n  );\n\n  if (resp.status === 204) {\n    console.log('success');\n  } else {\n    const data = await resp.json();\n    console.log(data);\n  }\n}\n\nrun();"},{"lang":"python","title":"Python","source":"import requests\n\naccount_id = \"YOUR_accountId_PARAMETER\"\nurl = \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" + account_id + \"/nfc\"\n\npayload = {\n  \"collectorId\": 0,\n  \"passTypeId\": \"string\",\n  \"token\": \"deadbeefcafebabe\"\n}\n\nheaders = {\"Content-Type\": \"application/json\"}\n\nresponse = requests.put(url, json=payload, headers=headers)\n\nif response.status_code == 204:\n  print(\"success\")\nelse:\n  data = response.json()\n  print(data)"},{"lang":"java","title":"Java","source":"import java.net.*;\nimport java.net.http.*;\nimport java.util.*;\n\npublic class App {\n  public static void main(String[] args) throws Exception {\n    var httpClient = HttpClient.newBuilder().build();\n\n    var payload = String.join(\"\\n\"\n      , \"{\"\n      , \" \\\"collectorId\\\": 0,\"\n      , \" \\\"passTypeId\\\": \\\"string\\\",\"\n      , \" \\\"token\\\": \\\"deadbeefcafebabe\\\"\"\n      , \"}\"\n    );\n\n    var host = \"https://mms.api.ed.ts.egym.coffee\";\n    var accountId = \"YOUR_accountId_PARAMETER\";\n    var pathname = \"/api/v2/accounts/%7BaccountId%7D/nfc\";\n    var request = HttpRequest.newBuilder()\n      .PUT(HttpRequest.BodyPublishers.ofString(payload))\n      .uri(URI.create(host + pathname ))\n      .header(\"Content-Type\", \"application/json\")\n      .build();\n\n    var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());\n\n    System.out.println(response.body());\n  }\n}"},{"lang":"csharp","title":"C#","source":"using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing System.Text;\nusing System.Text.Json;\n\npublic class Program\n{\n  public static async Task Main()\n  {\n    System.Net.Http.HttpClient client = new();\n\n    string json = JsonSerializer.Serialize(new\n    {\n      collectorId = \"0\",\n      passTypeId = \"string\",\n      token = \"deadbeefcafebabe\"\n    });\n\n    using StringContent postData = new(json, Encoding.UTF8, \"application/json\");\n      var AccountId = \"YOUR_accountId_PARAMETER\";\n    using HttpResponseMessage request = await client.PutAsync(\"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" + AccountId + \"/nfc\", postData);\n    string response = await request.Content.ReadAsStringAsync();\n\n    Console.WriteLine(response);\n  }\n}"},{"lang":"php","title":"PHP","source":"/**\n * Requires libcurl\n */\n\nconst accountId = \"YOUR_accountId_PARAMETER\";\n$curl = curl_init();\n\n$payload = array(\n  \"collectorId\" => 0,\n  \"passTypeId\" => \"string\",\n  \"token\" => \"deadbeefcafebabe\"\n);\n\ncurl_setopt_array($curl, [\n  CURLOPT_HTTPHEADER => [\n    \"Content-Type: application/json\"\n  ],\n  CURLOPT_POSTFIELDS => json_encode($payload),\n  CURLOPT_URL => \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" . accountId . \"/nfc\",\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_CUSTOMREQUEST => \"PUT\",\n]);\n\n$response = curl_exec($curl);\n$error = curl_error($curl);\n\ncurl_close($curl);\n\nif ($error) {\n  echo \"cURL Error #:\" . $error;\n} else {\n  echo $response;\n}"},{"lang":"go","title":"Go","source":"package main\n\nimport (\n  \"fmt\"\n  \"bytes\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n  accountId := \"YOUR_accountId_PARAMETER\";\n  reqUrl := \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" + accountId + \"/nfc\"\n  var data = []byte(`{\n    \"collectorId\": 0,\n    \"passTypeId\": \"string\",\n    \"token\": \"deadbeefcafebabe\"\n  }`)\n  req, err := http.NewRequest(\"PUT\", reqUrl, bytes.NewBuffer(data))\n  if err != nil {\n    panic(err)\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  res, err := http.DefaultClient.Do(req)\n  if err != nil {\n    panic(err)\n  }\n  defer res.Body.Close()\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    panic(err)\n  }\n\n  fmt.Println(res)\n  fmt.Println(string(body))\n}"},{"lang":"ruby","title":"Ruby","source":"require 'json'\nrequire 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\naccount_id = 'YOUR_accountId_PARAMETER'\nurl = URI('https://mms.api.ed.ts.egym.coffee/api/v2/accounts/' + account_id + '/nfc')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Put.new(url)\nrequest['Content-Type'] = 'application/json'\nrequest.body = {\n  collectorId: 0,\n  passTypeId: 'string',\n  token: 'deadbeefcafebabe'\n}.to_json\n\nresponse = http.request(request)\nputs response.read_body\n"},{"lang":"r","title":"R","source":"library(httr)\n\nbody = '{\n   \"collectorId\": 0,\n   \"passTypeId\": \"string\",\n   \"token\": \"deadbeefcafebabe\"\n}'\n\naccount_id = \"YOUR_accountId_PARAMETER\"\n\n# create you own operator\n\"%&%\" <- function(x, y)paste0(x,y)\n\nurl = \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" %&% account_id %&% \"/nfc\"\n\ndata_req <- PUT(\n  url,\n  add_headers(\"Content-Type\" = \"application/json\"),\n  body = body,\n  encode = \"json\",\n  verbose()\n)\n\ncontent(data_req)"},{"lang":"json","title":"Payload application/json","source":"{\n  \"collectorId\": 0,\n  \"passTypeId\": \"string\",\n  \"token\": \"deadbeefcafebabe\"\n}"}]},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"get-nfc","__idx":6},"children":["Get NFC"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Retrieve the member account by NFC token."]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"api-docs-mms-api-v2/apis/mms-v2.json","operationId":"getByNfc","parameters":{},"environments":{},"codeSamplesResolved":[{"lang":"shell","title":"curl","source":"curl -i -X GET \\\n  'https://mms.api.ed.ts.egym.coffee/api/v2/accounts/nfc/{nfc}?nfcFormat=NFC_EGYM_APPLE&collectorId=0&passTypeId=string'"},{"lang":"javascript","title":"JavaScript","source":"const query = new URLSearchParams({\n  nfcFormat: 'NFC_EGYM_APPLE',\n  collectorId: '0',\n  passTypeId: 'string'\n}).toString();\n\nconst nfc = 'YOUR_nfc_PARAMETER';\nconst resp = await fetch(\n  `https://mms.api.ed.ts.egym.coffee/api/v2/accounts/nfc/${nfc}?${query}`,\n  {method: 'GET'}\n);\n\nconst data = await resp.text();\nconsole.log(data);"},{"lang":"javascript","title":"Node.js","source":"import fetch from 'node-fetch';\n\nasync function run() {\n  const query = new URLSearchParams({\n    nfcFormat: 'NFC_EGYM_APPLE',\n    collectorId: '0',\n    passTypeId: 'string'\n  }).toString();\n\n  const nfc = 'YOUR_nfc_PARAMETER';\n  const resp = await fetch(\n    `https://mms.api.ed.ts.egym.coffee/api/v2/accounts/nfc/${nfc}?${query}`,\n    {method: 'GET'}\n  );\n\n  const data = await resp.text();\n  console.log(data);\n}\n\nrun();"},{"lang":"python","title":"Python","source":"import requests\n\nnfc = \"YOUR_nfc_PARAMETER\"\nurl = \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/nfc/\" + nfc\n\nquery = {\n  \"nfcFormat\": \"NFC_EGYM_APPLE\",\n  \"collectorId\": \"0\",\n  \"passTypeId\": \"string\"\n}\n\nresponse = requests.get(url, params=query)\n\ndata = response.json()\nprint(data)"},{"lang":"java","title":"Java","source":"import java.net.*;\nimport java.net.http.*;\nimport java.util.*;\nimport java.nio.charset.StandardCharsets;\nimport java.util.stream.Collectors;\n\npublic class App {\n  public static void main(String[] args) throws Exception {\n    var httpClient = HttpClient.newBuilder().build();\n\n    HashMap<String, String> params = new HashMap<>();\n    params.put(\"nfcFormat\", \"NFC_EGYM_APPLE\");\n    params.put(\"collectorId\", \"0\");\n    params.put(\"passTypeId\", \"string\");\n\n    var query = params.keySet().stream()\n      .map(key -> key + \"=\" + URLEncoder.encode(params.get(key), StandardCharsets.UTF_8))\n      .collect(Collectors.joining(\"&\"));\n\n    var host = \"https://mms.api.ed.ts.egym.coffee\";\n    var nfc = \"YOUR_nfc_PARAMETER\";\n    var pathname = \"/api/v2/accounts/nfc/%7Bnfc%7D\";\n    var request = HttpRequest.newBuilder()\n      .GET()\n      .uri(URI.create(host + pathname + '?' + query))\n      .build();\n\n    var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());\n\n    System.out.println(response.body());\n  }\n}"},{"lang":"csharp","title":"C#","source":"using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\npublic class Program\n{\n  public static async Task Main()\n  {\n    System.Net.Http.HttpClient client = new();\n\n      var Nfc = \"YOUR_nfc_PARAMETER\";\n    using HttpResponseMessage request = await client.GetAsync(\"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/nfc/\" + Nfc + \"?nfcFormat=NFC_EGYM_APPLE&collectorId=0&passTypeId=string\");\n    string response = await request.Content.ReadAsStringAsync();\n\n    Console.WriteLine(response);\n  }\n}"},{"lang":"php","title":"PHP","source":"/**\n * Requires libcurl\n */\n\nconst nfc = \"YOUR_nfc_PARAMETER\";\n$query = array(\n  \"nfcFormat\" => \"NFC_EGYM_APPLE\",\n  \"collectorId\" => \"0\",\n  \"passTypeId\" => \"string\"\n);\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n  CURLOPT_URL => \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/nfc/\" . nfc . \"?\" . http_build_query($query),\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_CUSTOMREQUEST => \"GET\",\n]);\n\n$response = curl_exec($curl);\n$error = curl_error($curl);\n\ncurl_close($curl);\n\nif ($error) {\n  echo \"cURL Error #:\" . $error;\n} else {\n  echo $response;\n}"},{"lang":"go","title":"Go","source":"package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n  nfc := \"YOUR_nfc_PARAMETER\";\n  reqUrl := \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/nfc/\" + nfc\n  req, err := http.NewRequest(\"GET\", reqUrl, nil)\n\n  query := req.URL.Query()\n  query.Add(\"nfcFormat\", \"NFC_EGYM_APPLE\")\n  query.Add(\"collectorId\", \"0\")\n  query.Add(\"passTypeId\", \"string\")\n  req.URL.RawQuery = query.Encode()\n\n  if err != nil {\n    panic(err)\n  }\n  res, err := http.DefaultClient.Do(req)\n  if err != nil {\n    panic(err)\n  }\n  defer res.Body.Close()\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    panic(err)\n  }\n\n  fmt.Println(res)\n  fmt.Println(string(body))\n}"},{"lang":"ruby","title":"Ruby","source":"require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nnfc = 'YOUR_nfc_PARAMETER'\nurl = URI('https://mms.api.ed.ts.egym.coffee/api/v2/accounts/nfc/' + nfc)\nparams = {\n  nfcFormat: 'NFC_EGYM_APPLE',\n  collectorId: '0',\n  passTypeId: 'string'\n}\nurl.query = URI.encode_www_form(params)\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body\n"},{"lang":"r","title":"R","source":"library(httr)\n\nnfc = \"YOUR_nfc_PARAMETER\"\n\n# create you own operator\n\"%&%\" <- function(x, y)paste0(x,y)\n\nurl = \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/nfc/\" %&% nfc %&% \"?nfcFormat=NFC_EGYM_APPLE&collectorId=0&passTypeId=string\"\n\ndata_req <- GET(\n  url,\n  verbose()\n)\n\ncontent(data_req)"}]},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"retrieve-account-nfc-token","__idx":7},"children":["Retrieve Account NFC Token"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Retrieve the NFC token assigned to a member account."]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"api-docs-mms-api-v2/apis/mms-v2.json","operationId":"getAccountNfcToken","parameters":{},"environments":{},"codeSamplesResolved":[{"lang":"shell","title":"curl","source":"curl -i -X GET \\\n  'https://mms.api.ed.ts.egym.coffee/api/v2/accounts/{accountId}/nfc?collectorId=0&passTypeId=string'"},{"lang":"javascript","title":"JavaScript","source":"const query = new URLSearchParams({\n  collectorId: '0',\n  passTypeId: 'string'\n}).toString();\n\nconst accountId = 'YOUR_accountId_PARAMETER';\nconst resp = await fetch(\n  `https://mms.api.ed.ts.egym.coffee/api/v2/accounts/${accountId}/nfc?${query}`,\n  {method: 'GET'}\n);\n\nconst data = await resp.text();\nconsole.log(data);"},{"lang":"javascript","title":"Node.js","source":"import fetch from 'node-fetch';\n\nasync function run() {\n  const query = new URLSearchParams({\n    collectorId: '0',\n    passTypeId: 'string'\n  }).toString();\n\n  const accountId = 'YOUR_accountId_PARAMETER';\n  const resp = await fetch(\n    `https://mms.api.ed.ts.egym.coffee/api/v2/accounts/${accountId}/nfc?${query}`,\n    {method: 'GET'}\n  );\n\n  const data = await resp.text();\n  console.log(data);\n}\n\nrun();"},{"lang":"python","title":"Python","source":"import requests\n\naccount_id = \"YOUR_accountId_PARAMETER\"\nurl = \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" + account_id + \"/nfc\"\n\nquery = {\n  \"collectorId\": \"0\",\n  \"passTypeId\": \"string\"\n}\n\nresponse = requests.get(url, params=query)\n\ndata = response.json()\nprint(data)"},{"lang":"java","title":"Java","source":"import java.net.*;\nimport java.net.http.*;\nimport java.util.*;\nimport java.nio.charset.StandardCharsets;\nimport java.util.stream.Collectors;\n\npublic class App {\n  public static void main(String[] args) throws Exception {\n    var httpClient = HttpClient.newBuilder().build();\n\n    HashMap<String, String> params = new HashMap<>();\n    params.put(\"collectorId\", \"0\");\n    params.put(\"passTypeId\", \"string\");\n\n    var query = params.keySet().stream()\n      .map(key -> key + \"=\" + URLEncoder.encode(params.get(key), StandardCharsets.UTF_8))\n      .collect(Collectors.joining(\"&\"));\n\n    var host = \"https://mms.api.ed.ts.egym.coffee\";\n    var accountId = \"YOUR_accountId_PARAMETER\";\n    var pathname = \"/api/v2/accounts/%7BaccountId%7D/nfc\";\n    var request = HttpRequest.newBuilder()\n      .GET()\n      .uri(URI.create(host + pathname + '?' + query))\n      .build();\n\n    var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());\n\n    System.out.println(response.body());\n  }\n}"},{"lang":"csharp","title":"C#","source":"using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\npublic class Program\n{\n  public static async Task Main()\n  {\n    System.Net.Http.HttpClient client = new();\n\n      var AccountId = \"YOUR_accountId_PARAMETER\";\n    using HttpResponseMessage request = await client.GetAsync(\"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" + AccountId + \"/nfc?collectorId=0&passTypeId=string\");\n    string response = await request.Content.ReadAsStringAsync();\n\n    Console.WriteLine(response);\n  }\n}"},{"lang":"php","title":"PHP","source":"/**\n * Requires libcurl\n */\n\nconst accountId = \"YOUR_accountId_PARAMETER\";\n$query = array(\n  \"collectorId\" => \"0\",\n  \"passTypeId\" => \"string\"\n);\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n  CURLOPT_URL => \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" . accountId . \"/nfc?\" . http_build_query($query),\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_CUSTOMREQUEST => \"GET\",\n]);\n\n$response = curl_exec($curl);\n$error = curl_error($curl);\n\ncurl_close($curl);\n\nif ($error) {\n  echo \"cURL Error #:\" . $error;\n} else {\n  echo $response;\n}"},{"lang":"go","title":"Go","source":"package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n  accountId := \"YOUR_accountId_PARAMETER\";\n  reqUrl := \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" + accountId + \"/nfc\"\n  req, err := http.NewRequest(\"GET\", reqUrl, nil)\n\n  query := req.URL.Query()\n  query.Add(\"collectorId\", \"0\")\n  query.Add(\"passTypeId\", \"string\")\n  req.URL.RawQuery = query.Encode()\n\n  if err != nil {\n    panic(err)\n  }\n  res, err := http.DefaultClient.Do(req)\n  if err != nil {\n    panic(err)\n  }\n  defer res.Body.Close()\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    panic(err)\n  }\n\n  fmt.Println(res)\n  fmt.Println(string(body))\n}"},{"lang":"ruby","title":"Ruby","source":"require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\naccount_id = 'YOUR_accountId_PARAMETER'\nurl = URI('https://mms.api.ed.ts.egym.coffee/api/v2/accounts/' + account_id + '/nfc')\nparams = {\n  collectorId: '0',\n  passTypeId: 'string'\n}\nurl.query = URI.encode_www_form(params)\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\n\nresponse = http.request(request)\nputs response.read_body\n"},{"lang":"r","title":"R","source":"library(httr)\n\naccount_id = \"YOUR_accountId_PARAMETER\"\n\n# create you own operator\n\"%&%\" <- function(x, y)paste0(x,y)\n\nurl = \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" %&% account_id %&% \"/nfc?collectorId=0&passTypeId=string\"\n\ndata_req <- GET(\n  url,\n  verbose()\n)\n\ncontent(data_req)"}]},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"delete-nfc","__idx":8},"children":["Delete NFC"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Remove the NFC token assignment from a member account."]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"api-docs-mms-api-v2/apis/mms-v2.json","operationId":"deleteAccountNfcToken","parameters":{},"environments":{},"codeSamplesResolved":[{"lang":"shell","title":"curl","source":"curl -i -X DELETE \\\n  'https://mms.api.ed.ts.egym.coffee/api/v2/accounts/{accountId}/nfc?collectorId=0&passTypeId=string'"},{"lang":"javascript","title":"JavaScript","source":"const query = new URLSearchParams({\n  collectorId: '0',\n  passTypeId: 'string'\n}).toString();\n\nconst accountId = 'YOUR_accountId_PARAMETER';\nconst resp = await fetch(\n  `https://mms.api.ed.ts.egym.coffee/api/v2/accounts/${accountId}/nfc?${query}`,\n  {method: 'DELETE'}\n);\n\nif (resp.status === 204) {\n  console.log('success');\n} else {\n  const data = await resp.text();\n  console.log(data);\n}"},{"lang":"javascript","title":"Node.js","source":"import fetch from 'node-fetch';\n\nasync function run() {\n  const query = new URLSearchParams({\n    collectorId: '0',\n    passTypeId: 'string'\n  }).toString();\n\n  const accountId = 'YOUR_accountId_PARAMETER';\n  const resp = await fetch(\n    `https://mms.api.ed.ts.egym.coffee/api/v2/accounts/${accountId}/nfc?${query}`,\n    {method: 'DELETE'}\n  );\n\n  if (resp.status === 204) {\n    console.log('success');\n  } else {\n    const data = await resp.text();\n    console.log(data);\n  }\n}\n\nrun();"},{"lang":"python","title":"Python","source":"import requests\n\naccount_id = \"YOUR_accountId_PARAMETER\"\nurl = \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" + account_id + \"/nfc\"\n\nquery = {\n  \"collectorId\": \"0\",\n  \"passTypeId\": \"string\"\n}\n\nresponse = requests.delete(url, params=query)\n\nif response.status_code == 204:\n  print(\"success\")\nelse:\n  data = response.json()\n  print(data)"},{"lang":"java","title":"Java","source":"import java.net.*;\nimport java.net.http.*;\nimport java.util.*;\nimport java.nio.charset.StandardCharsets;\nimport java.util.stream.Collectors;\n\npublic class App {\n  public static void main(String[] args) throws Exception {\n    var httpClient = HttpClient.newBuilder().build();\n\n    HashMap<String, String> params = new HashMap<>();\n    params.put(\"collectorId\", \"0\");\n    params.put(\"passTypeId\", \"string\");\n\n    var query = params.keySet().stream()\n      .map(key -> key + \"=\" + URLEncoder.encode(params.get(key), StandardCharsets.UTF_8))\n      .collect(Collectors.joining(\"&\"));\n\n    var host = \"https://mms.api.ed.ts.egym.coffee\";\n    var accountId = \"YOUR_accountId_PARAMETER\";\n    var pathname = \"/api/v2/accounts/%7BaccountId%7D/nfc\";\n    var request = HttpRequest.newBuilder()\n      .DELETE()\n      .uri(URI.create(host + pathname + '?' + query))\n      .build();\n\n    var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());\n\n    System.out.println(response.body());\n  }\n}"},{"lang":"csharp","title":"C#","source":"using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\npublic class Program\n{\n  public static async Task Main()\n  {\n    System.Net.Http.HttpClient client = new();\n\n      var AccountId = \"YOUR_accountId_PARAMETER\";\n    using HttpResponseMessage request = await client.DeleteAsync(\"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" + AccountId + \"/nfc?collectorId=0&passTypeId=string\");\n    string response = await request.Content.ReadAsStringAsync();\n\n    Console.WriteLine(response);\n  }\n}"},{"lang":"php","title":"PHP","source":"/**\n * Requires libcurl\n */\n\nconst accountId = \"YOUR_accountId_PARAMETER\";\n$query = array(\n  \"collectorId\" => \"0\",\n  \"passTypeId\" => \"string\"\n);\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n  CURLOPT_URL => \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" . accountId . \"/nfc?\" . http_build_query($query),\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_CUSTOMREQUEST => \"DELETE\",\n]);\n\n$response = curl_exec($curl);\n$error = curl_error($curl);\n\ncurl_close($curl);\n\nif ($error) {\n  echo \"cURL Error #:\" . $error;\n} else {\n  echo $response;\n}"},{"lang":"go","title":"Go","source":"package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n  accountId := \"YOUR_accountId_PARAMETER\";\n  reqUrl := \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" + accountId + \"/nfc\"\n  req, err := http.NewRequest(\"DELETE\", reqUrl, nil)\n\n  query := req.URL.Query()\n  query.Add(\"collectorId\", \"0\")\n  query.Add(\"passTypeId\", \"string\")\n  req.URL.RawQuery = query.Encode()\n\n  if err != nil {\n    panic(err)\n  }\n  res, err := http.DefaultClient.Do(req)\n  if err != nil {\n    panic(err)\n  }\n  defer res.Body.Close()\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    panic(err)\n  }\n\n  fmt.Println(res)\n  fmt.Println(string(body))\n}"},{"lang":"ruby","title":"Ruby","source":"require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\naccount_id = 'YOUR_accountId_PARAMETER'\nurl = URI('https://mms.api.ed.ts.egym.coffee/api/v2/accounts/' + account_id + '/nfc')\nparams = {\n  collectorId: '0',\n  passTypeId: 'string'\n}\nurl.query = URI.encode_www_form(params)\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Delete.new(url)\n\nresponse = http.request(request)\nputs response.read_body\n"},{"lang":"r","title":"R","source":"library(httr)\n\naccount_id = \"YOUR_accountId_PARAMETER\"\n\n# create you own operator\n\"%&%\" <- function(x, y)paste0(x,y)\n\nurl = \"https://mms.api.ed.ts.egym.coffee/api/v2/accounts/\" %&% account_id %&% \"/nfc?collectorId=0&passTypeId=string\"\n\ndata_req <- DELETE(\n  url,\n  verbose()\n)\n\ncontent(data_req)"}]},"children":[]}]},"headings":[{"value":"NFC Assignment","id":"nfc-assignment","depth":1},{"value":"Introduction","id":"introduction","depth":2},{"value":"Scenario","id":"scenario","depth":2},{"value":"Preconditions","id":"preconditions","depth":2},{"value":"Detailed flow","id":"detailed-flow","depth":2},{"value":"Assign NFC","id":"assign-nfc","depth":2},{"value":"Get NFC","id":"get-nfc","depth":2},{"value":"Retrieve Account NFC Token","id":"retrieve-account-nfc-token","depth":2},{"value":"Delete NFC","id":"delete-nfc","depth":2}],"frontmatter":{"seo":{"title":"NFC Assignment"}},"lastModified":"2026-03-23T12:24:37.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/mms-api-v2/tutorials/nfc-assignment","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}