Skip to content

Accounts management user manual

Login

Go to https://dm.diamondmatch.org/ and sign in with your user credentials. You can use either your unique username or your email to log in.

Info

Please contact us if you have trouble signing in: it-support@spacecode.com.

User management and permissions

To manage other users, click on Users in the sidebar or open this link.
To change your own user profile, click on your user name in the top right corner and go to My Profile, or open this link.

The user permissions are shown in the following table:

Permission Authentication Fingerprinting Admin
Account management
Add, edit & delete users
DiamondMatch
Fingerprinting
Authentication with SKU
Inventory
View inventory
Add, edit & delete diamonds

User management through API

Another way you can manage users is through our API

The relevant endpoints for this functionality are the following:

Me

This is a GET endpoint (https://api.dm.diamondmatch.org/v2/external/users/me) and returns the user's details

    {
      "email": "john.doe@email.com",
      "username": "john_doe",
      "firstName": "John",
      "lastName": "Doe",
      "contactNumber": "0761234567",
      "permissions": [
        "Admin"
      ]
    }

User

This endpoint (https://api.dm.diamondmatch.org/v2/external/users) allows to view, create and delete users through GET, POST and DELETE methods respectively.

# GET request
curl -X GET "https://api.dm.diamondmatch.org/v2/external/users?filters%5Busername%5D=john_doe" \
  -H "x-api-key: YOUR_KEY"
# [
#   {
#      "email": "john.doe@email.com",
#      "username": "john_doe",
#      "firstName": "John",
#      "lastName": "Doe",
#      "contactNumber": "0761234567",
#      "permissions": [
#        "Admin"
#      ]
#   }
# ]

# POST request
curl -X POST "https://api.dm.diamondmatch.org/v2/external/users" \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "jane.doe@email.com",
    "username": "jane_doe",
    "firstName": "Jane",
    "lastName": "Doe",
    "permissions": ["Admin"]
  }'
# HTTP 201

# DELETE request
curl -X DELETE "https://api.dm.diamondmatch.org/v2/external/users?username=jane_doe" \
  -H "x-api-key: YOUR_KEY"
# HTTP 204
import requests

# GET request
response = requests.get(
    "https://api.dm.diamondmatch.org/v2/external/users?filters%5Busername%5D=john_doe",
    headers={"x-api-key": "YOUR_KEY"}
)
print(response.json())
# [
#   {
#      "email": "john.doe@email.com",
#      "username": "john_doe",
#      "firstName": "John",
#      "lastName": "Doe",
#      "contactNumber: "0761234567",
#      "permissions": [
#        "Admin"
#      ]
#   }
# ]

# POST request
response = requests.post(
    "https://api.dm.diamondmatch.org/v2/external/users",
    headers={"x-api-key": "YOUR_KEY"},
    json={
      "email": "jane.doe@email.com",
      "username": "jane_doe",
      "firstName": "Jane",
      "lastName": "Doe",
      "permissions": [
        "Admin"
      ]
    }
)
print(response.status_code) # 201

# DELETE request
response = requests.delete(
    "https://api.dm.diamondmatch.org/v2/external/users?username=jane_doe",
    headers={"x-api-key": "YOUR_KEY"}
)
print(response.status_code) # 204
// GET request
const getResponse = await fetch(
  "https://api.dm.diamondmatch.org/v2/external/users?filters%5Busername%5D=john_doe",
  {
    headers: { "x-api-key": "YOUR_KEY" }
  }
);
const userData = await getResponse.json();
console.log(userData);
// [
//   {
//      "email": "john.doe@email.com",
//      "username": "john_doe",
//      "firstName": "John",
//      "lastName": "Doe",
//      "contactNumber": "0761234567",
//      "permissions": [
//        "Admin"
//      ]
//   }
// ]

// POST request
const postResponse = await fetch(
  "https://api.dm.diamondmatch.org/v2/external/users",
  {
    method: "POST",
    headers: {
      "x-api-key": "YOUR_KEY",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      email: "jane.doe@email.com",
      username: "jane_doe",
      firstName: "Jane",
      lastName: "Doe",
      permissions: ["Admin"]
    })
  }
);
console.log(postResponse.status); // 201

// DELETE request
const deleteResponse = await fetch(
  "https://api.dm.diamondmatch.org/v2/external/users?username=jane_doe",
  {
    method: "DELETE",
    headers: { "x-api-key": "YOUR_KEY" }
  }
);
console.log(deleteResponse.status); // 204
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    client := &http.Client{}

    // GET request
    req, _ := http.NewRequest("GET", 
        "https://api.dm.diamondmatch.org/v2/external/users?filters%5Busername%5D=john_doe", 
        nil)
    req.Header.Set("x-api-key", "YOUR_KEY")

    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
    // [
    //   {
    //      "email": "john.doe@email.com",
    //      "username": "john_doe",
    //      "firstName": "John",
    //      "lastName": "Doe",
    //      "contactNumber": "0761234567",
    //      "permissions": [
    //        "Admin"
    //      ]
    //   }
    // ]

    // POST request
    userData := map[string]interface{}{
        "email":       "jane.doe@email.com",
        "username":    "jane_doe",
        "firstName":   "Jane",
        "lastName":    "Doe",
        "permissions": []string{"Admin"},
    }
    jsonData, _ := json.Marshal(userData)

    req, _ = http.NewRequest("POST", 
        "https://api.dm.diamondmatch.org/v2/external/users", 
        bytes.NewBuffer(jsonData))
    req.Header.Set("x-api-key", "YOUR_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, _ = client.Do(req)
    defer resp.Body.Close()
    fmt.Println(resp.StatusCode) // 201

    // DELETE request
    req, _ = http.NewRequest("DELETE", 
        "https://api.dm.diamondmatch.org/v2/external/users?username=jane_doe", 
        nil)
    req.Header.Set("x-api-key", "YOUR_KEY")

    resp, _ = client.Do(req)
    defer resp.Body.Close()
    fmt.Println(resp.StatusCode) // 204
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class ApiExample {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();

        // GET request
        HttpRequest getRequest = HttpRequest.newBuilder()
            .uri(URI.create("https://api.dm.diamondmatch.org/v2/external/users?filters%5Busername%5D=john_doe"))
            .header("x-api-key", "YOUR_KEY")
            .GET()
            .build();

        HttpResponse<String> getResponse = client.send(getRequest, 
            HttpResponse.BodyHandlers.ofString());
        System.out.println(getResponse.body());
        // [
        //   {
        //      "email": "john.doe@email.com",
        //      "username": "john_doe",
        //      "firstName": "John",
        //      "lastName": "Doe",
        //      "contactNumber": "0761234567",
        //      "permissions": [
        //        "Admin"
        //      ]
        //   }
        // ]

        // POST request
        String jsonBody = """
            {
              "email": "jane.doe@email.com",
              "username": "jane_doe",
              "firstName": "Jane",
              "lastName": "Doe",
              "permissions": ["Admin"]
            }
            """;

        HttpRequest postRequest = HttpRequest.newBuilder()
            .uri(URI.create("https://api.dm.diamondmatch.org/v2/external/users"))
            .header("x-api-key", "YOUR_KEY")
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(jsonBody))
            .build();

        HttpResponse<String> postResponse = client.send(postRequest, 
            HttpResponse.BodyHandlers.ofString());
        System.out.println(postResponse.statusCode()); // 201

        // DELETE request
        HttpRequest deleteRequest = HttpRequest.newBuilder()
            .uri(URI.create("https://api.dm.diamondmatch.org/v2/external/users?username=jane_doe"))
            .header("x-api-key", "YOUR_KEY")
            .DELETE()
            .build();

        HttpResponse<String> deleteResponse = client.send(deleteRequest, 
            HttpResponse.BodyHandlers.ofString());
        System.out.println(deleteResponse.statusCode()); // 204
    }
}
<?php

// GET request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.dm.diamondmatch.org/v2/external/users?filters%5Busername%5D=john_doe");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("x-api-key: YOUR_KEY"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);
echo $response;
// [
//   {
//      "email": "john.doe@email.com",
//      "username": "john_doe",
//      "firstName": "John",
//      "lastName": "Doe",
//      "contactNumber": "0761234567",
//      "permissions": [
//        "Admin"
//      ]
//   }
// ]

// POST request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.dm.diamondmatch.org/v2/external/users");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "x-api-key: YOUR_KEY",
    "Content-Type: application/json"
));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array(
    "email" => "jane.doe@email.com",
    "username" => "jane_doe",
    "firstName" => "Jane",
    "lastName" => "Doe",
    "permissions" => array("Admin")
)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode; // 201

// DELETE request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.dm.diamondmatch.org/v2/external/users?username=jane_doe");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("x-api-key: YOUR_KEY"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode; // 204

?>
require 'net/http'
require 'json'

# GET request
uri = URI("https://api.dm.diamondmatch.org/v2/external/users?filters%5Busername%5D=john_doe")
request = Net::HTTP::Get.new(uri)
request["x-api-key"] = "YOUR_KEY"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

puts response.body
# [
#   {
#      "email": "john.doe@email.com",
#      "username": "john_doe",
#      "firstName": "John",
#      "lastName": "Doe",
#      "contactNumber": "0761234567",
#      "permissions": [
#        "Admin"
#      ]
#   }
# ]

# POST request
uri = URI("https://api.dm.diamondmatch.org/v2/external/users")
request = Net::HTTP::Post.new(uri)
request["x-api-key"] = "YOUR_KEY"
request["Content-Type"] = "application/json"
request.body = {
  email: "jane.doe@email.com",
  username: "jane_doe",
  firstName: "Jane",
  lastName: "Doe",
  permissions: ["Admin"]
}.to_json

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

puts response.code # 201

# DELETE request
uri = URI("https://api.dm.diamondmatch.org/v2/external/users?username=jane_doe")
request = Net::HTTP::Delete.new(uri)
request["x-api-key"] = "YOUR_KEY"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

puts response.code # 204