1. Authentication

1.1 OAuth2

OAuth, specifically OAuth2, is the open standard used across the MeditLink OpenAPI Platform for token-based authentication and authorization.
Please be noted that the OpenAPI manages authorization and permission under 'Standard Oauth2.0 authorization method' and few of the features are not provided due to security reasons.
Specific details regarding Oauth 2.0 can be found in https://oauth.net/2/

1.1.1 Field Guide

Client ID
The “client ID” is essentially your app’s username.

It is a 32-character alphanumeric string (e.g., oYYDFeocxR24zSJtuHuSCVvljrJGP8gx), and it is passed as the value for the client_id query parameter and JSON attribute.

Client Secret
The “client secret” is essentially your app’s password.

It is a 32-character alphanumeric string (e.g., SGBb3Fa0EsRklPd0DrC02pFV7jsUVwEv), and it is passed as the value for the client_secret query parameter and JSON attribute.
If you lose control of your credentials, you can regenerate your client secret.

Authorization Code
In a three-legged authorization code grant type flow, an authorization code is passed through a code query parameter when the user is redirected back to the app via the callback URL. Anything returned this way is accessible to the end user and, in principle, any intermediate system (including spyware in a browser extension).

For this reason, returning an access token directly poses a security risk. But an authorization code on its own cannot be used to get an access token; the app has to supplement it with its client ID and secret in the POST gettoken endpoint. Because the end user (and any part of the app that runs in the web browser) does not have the client ID and secret, the access token is not exposed.

The authorization code is a 32-character string (e.g., R24zS0EsRklPd0JtpFV7ua0EsRklPdS2).

Access Token
An access token (sometimes just “token” or “bearer token”) is returned at the end of a successful authentication flow.

The token is used in subsequent API calls to the MeditLink OpenAPI Platform. The platform keeps track of what resources the token is entitled to access and either allows or denies access at call time.

Tokens have a limited lifespan and expire after the number of seconds specified in the expires_in JSON attribute that is returned alongside the access_token attribute when it is first acquired.

Refresh Token
it would be very disruptive to require that an end user of your app be required to go through the authentication flow every time the access token expired. When your app obtains a access_token, it is also provided a refresh token, which can be used with the POST refreshtoken endpoint to get a new three-legged access token without involving the user by putting them through another authentication flow.


1.1.2 Scopes

A scope is a permission that is set on a token, a context in which that token may act. For example, a token with the USER scope is permitted to read User data within the MeditLink OpenAPI platform and can be used on those endpoints that require that scope. Tokens without that scope would be denied access to such endpoints. (Individual endpoint reference pages list the required scopes.)

Scopes serve two principal functions:
Privacy and Control they act as a mechanism for requesting and securing permission to act on an end user’s behalf in specified ways.
Security they ensure that if you lose control of your token, it cannot be misused to access resources for which it was not intended.

Note that scopes are mandatory for all access tokens; calls without scopes will be rejected.

Scope Permission Description

USER

View your User info

The application will be able to read the User’s profile data (but it will not include associated File).

GROUP

View your Group data

The application will be able to read the Group’s data (not including associated File).

CASE

View your Case data

The application will be able to read the Case’s data (you can show list of File, but will not be able to download them).

FILE

View your File data, and Download

The application will be able to read and download the File.

FILE:MANAGE

Manage your File data

The application will be able to register/upload/delete the File.

ORDER

View your Order data

The application will be able to read the Order’s data.

ORDER:MANAGE

Manage your Order data

The application will be able to accept/cancel/reject the Order’s data.


1.2 Get Token

1.2.1 Authorized Code Grant

If you need an end user to authorize your app to act on the user’s behalf, you’ll want to check out this tutorial.

The authorization code grant type is used to obtain both access tokens and refresh tokens and is optimized for confidential clients

Note that this tutorial does not show you how to write server-side code. Instead, it uses cURL commands to illustrate the calls you need to instrument in your code.

This tutorial presupposes that the app is a web app and that it needs to read the user’s data.

Before you begin, please contact us to create your app on the MedtiLink OpenAPI Platform. Specify your app’s callback URL and note your client ID and secret.

Step #1. Direct the User to the Authorization Web Flow

GET https://stage-openapi-auth.meditlink.com/oauth/authorize

At some point in the UI of your web app, you will find that you need to get the end user’s consent to access MeditLink resources on the user’s behalf. Depending on your app, you may do this when the user first starts using the app, or you may wait until your app actually needs to access the resource. Whatever the case, you will redirect the user to the GET authorize endpoint in their browser. For example, you might provide a link that looks like the following.

<a href="https://stage-openapi-auth.meditlink.com/oauth/authorize?client_id=Hpg1DOJGCPSLGk6kIxZTF1z9ZT4ScQlZ&response_type=code&redirect_uri=http://localhost/callback?me&scope=USER GROUP&state=bn6q6ru91ygkzwo8rfc0s1f7">
  • https://stage-openapi-auth.meditlink.com/oauth/authorize
    This is the endpoint URI and should be used verbatim.

  • client_id=Hpg1DOJGCPSLGk6kIxZTF1z9ZT4ScQlZ
    replace the value here with your app’s client ID.

  • response_type=code
    This is what tells the OAuth server that you’re using the “Authentication Code” grant type and should be used verbatim.

  • redirect_uri=http://your-domain-url/callback
    his is the URL-encoded callback URL you want the user redirected to after they grant consent. In this example, that URL is http://your-domain-url/callback. Replace the value here with the appropriate URL for your web app. Note that it must match the pattern specified for the callback URL in your app’s registration in the MeditLink OpenAPI platform.

  • scope=USER GROUP
    This requests the USER and GROUP scope. You can leave this value as-is for purposes of this example, but in your own app, you should request the scope(s) you actually need.
    ref. 1.1.2 Scopes

  • state=bn6q6ru91ygkzwo8rfc0s1f7
    Authorization protocols provide a state parameter that allows you to restore the previous state of your application. The state parameter preserves some state object set by the client in the Authorization request and makes it available to the client in the response.
    ref. https://auth0.com/docs/protocols/oauth2/oauth-state#csrf-attacks

Step #2. Login and Authorize approve
Clicking on this link will take the end user to the MeditLink OpenAPI Log In page
Login
After entering their MeditLink ID credentials and logging in, the user will be redirected to the OAuth consent page.
Authorize

When consent has been granted, the user will be redirected back to your callback URL (redirect_uri) with an additional code query parameter that contains the authorization code (e.g., R24zS0EsRklPd0JtpFV7ua0EsRklPdS2).

Step #3. Implement Code that Extracts the Authorization Code
in this example, the user was redirected to http://your-domain-url/callback?code=R24zS0EsRklPd0JtpFV7ua0EsRklPdS2

Your code that serves up the /callback URL in your web app should extract this code query parameter value and store it in a temporary variable.

Step #4. Exchange the Authorization Code for an Access Token

POST https://stage-openapi-auth.meditlink.com/oauth/token

Immediately after extracting the code query parameter value, you should exchange the authorization code for an access token using the /oauth/token endpoint.

Replace the client_id, client_secret, code, and redirect_uri values in the example below with those specific to your app and from the above steps.

POST /oauth/token HTTP/1.1
Authorization: Basic {your-basic-authentication-value}
Content-Type: application/x-www-form-urlencoded
code=R24zS0EsRklPd0JtpFV7ua0EsRklPdS2&state=bn6q6ru91ygkzwo8rfc0s1f7&grant_type=authorization_code&redirect_uri=http%3A%2F%2Flocalhost%3A20000%2Fcallback&scope=USER%20GROUP
Host: stage-openapi-auth.meditlink.com

you can use this example to instrument the correct call in your server-side code.

A successful response, in relevant part, will look like this

{
  "access_token": "492f2f8c-07d5-433b-8afc-13ba304157cd",
  "token_type": "bearer",
  "refresh_token": "96a9e748-8cad-4a29-b371-0a7d252f38fb",
  "expires_in": 10159,
  "scope": "USER GROUP",
  "refresh_token_exp": 1686217896
}

1.2.2 Implicit Grant

The main difference here from the authorization code grant type is that the client receives the access token as the result of the authorization request. The refresh token is not issued in this case which requires repeating the authorization process once the access token expires.

Based on the use case that needs to be covered by your application and the above described constraints, you should make a choice between the authorization code and implicit grant type workflow.

Note that this tutorial does not show you how to write your code, instead it just illustrates the calls you need to instrument in your code.

Before you begin, please contact us to create your app on the MedtiLink OpenAPI Platform. Specify your app’s callback URL and note your client ID and secret.

Step #1. Direct the User to the Authorization Web Flow

GET https://stage-openapi-auth.meditlink.com/oauth/authorize

At some point in the UI of your web app, you will find that you need to get the end user’s consent to access MeditLink resources on the user’s behalf. Depending on your app, you may do this when the user first starts using the app, or you may wait until your app actually needs to access the resource. Whatever the case, you will redirect the user to the GET authorize endpoint in their browser. For example, you might provide a link that looks like the following.

<a href="https://stage-openapi-auth.meditlink.com/oauth/authorize?client_id=Hpg1DOJGCPSLGk6kIxZTF1z9ZT4ScQlZ&response_type=token&redirect_uri=http://localhost/callback?me&scope=USER GROUP&state=bn6q6ru91ygkzwo8rfc0s1f7">
  • https://stage-openapi-auth.meditlink.com/oauth/authorize
    This is the endpoint URI and should be used verbatim.

  • client_id=Hpg1DOJGCPSLGk6kIxZTF1z9ZT4ScQlZ
    eplace the value here with your app’s client ID.

  • response_type=token
    This is what tells the OAuth server that you’re using the “Implicit” grant type and should be used verbatim.

  • redirect_uri=http://your-domain-url/callback
    his is the URL-encoded callback URL you want the user redirected to after they grant consent. In this example, that URL is http://your-domain-url/callback. Replace the value here with the appropriate URL for your web app. Note that it must match the pattern specified for the callback URL in your app’s registration in the MeditLink OpenAPI platform.

  • scope=USER GROUP
    This requests the USER and GROUP scope. You can leave this value as-is for purposes of this example, but in your own app, you should request the scope(s) you actually need.
    ref. 1.1.2 Scopes

  • state=bn6q6ru91ygkzwo8rfc0s1f7
    Authorization protocols provide a state parameter that allows you to restore the previous state of your application. The state parameter preserves some state object set by the client in the Authorization request and makes it available to the client in the response.
    ref. https://auth0.com/docs/protocols/oauth2/oauth-state#csrf-attacks

Step #2. Login and Authorize approve
Clicking on this link will take the end user to the MeditLink OpenAPI Log In page
Login
After entering their MeditLink ID credentials and logging in, the user will be redirected to the OAuth consent page.
Authorize

When consent has been granted, the user will be redirected back to your callback URL (redirect_uri) with an additional code query parameter that contains the authorization code (e.g., R24zS0EsRklPd0JtpFV7ua0EsRklPdS2).

Step #3. Implement Code that Extracts the Access Token
in this example, the user was redirected to http://your-domain-url/callback#access_token=da91514b-41c2-4e58-bacb-d4e32ac39f3a&token_type=bearer&state=bn6q6ru91ygkzwo8rfc0s1f7&expires_in=86399

Your code that serves up the /callback URL in your web app should return a web page with a snippet of JavaScript to extract the fragment. and you will parsing URL and get the access_token
You will then be able to use the access token to make calls to other API endpoints on behalf of the end user.

After the token expires, You should repeat this flow to authorize the user again to acquire a new access token.


1.2.3 Password Grant

Step #1. Use Your Account of MeditLink to Obtain an Access Token

POST https://stage-openapi-auth.meditlink.com/oauth/token

Basic authentication must be created using client_id and client_secret, and the access token must be issued using the POST https://stage-openapi-auth.meditlink.com/oauth/token endpoint with the user information subscribed to MeditLink.

Basic authentication is a method of providing a username and password when requested by an HTTP user agent (such as a web browser). Please refer to https://www.twilio.com/docs/glossary/what-is-basic-authentication.
POST /oauth/token HTTP/1.1
Authorization: Basic {your-basic-authentication-value}
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=username@mail.com&password=password
Host: stage-openapi-auth.meditlink.com

A successful response, in relevant part, will look like this

{
  "access_token": "492f2f8c-07d5-433b-8afc-13ba304157cd",
  "token_type": "bearer",
  "refresh_token": "96a9e748-8cad-4a29-b371-0a7d252f38fb",
  "expires_in": 10159,
  "scope": "USER GROUP",
  "refresh_token_exp": 1686217896
}

1.3 Check Token

URI Information
POST https://stage-openapi-auth.meditlink.com/oauth/check_token
Request Headers
Name Type Constraints Description

Authorization

string

Must not be null

Basic authentication

Basic authentication must be created using client_id and client_secret, and the access token must be issued using the POST https://stage-openapi-auth.meditlink.com/oauth/token endpoint with the user information subscribed to MeditLink.

Request Query Parameters
Parameter Type Constraints Description

token

string

Must not be null

access_token value in Token Data

Response Body Structure
{
    "aud": [
        "MEDITLINK_OPENAPI_CLIENT"
    ],
    "user_name": "meditlink.api.clinic@medit.com",
    "scope": [
        "USER",
        "GROUP",
        "CASE",
        "FILE",
        "ORDER",
        "PRODUCT:DENTAL"
    ],
    "active": true,
    "exp": 1624322318,
    "authorities": [
        "CLINIC:ADMIN"
    ],
    "refresh_token_exp": 1701852155,
    "client_id": "rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO"
}
Example Request
POST /oauth/check_token?token=0791b0db-b3a1-4f29-ab7a-a97f725c1bb5 HTTP/1.1
Authorization: Basic {your-basic-authentication-value}
Host: stage-openapi-auth.meditlink.com

1.4 Refresh Token

URI Information
POST https://stage-openapi-auth.meditlink.com/oauth/token
Request Headers
Name Type Constraints Description

Authorization

string

Must not be null

Basic authentication

Basic authentication must be created using client_id and client_secret, and the access token must be issued using the POST https://stage-openapi-auth.meditlink.com/oauth/token endpoint with the user information subscribed to MeditLink.

Request Query Parameters
Parameter Type Constraints Description

grant_type

string

Must not be null

use refresh_token as fixed

refresh_token

string

Must not be null

refresh_token value in Token Data

Response Body Structure
{
  "access_token": "492f2f8c-07d5-433b-8afc-13ba304157cd",
  "token_type": "bearer",
  "refresh_token": "96a9e748-8cad-4a29-b371-0a7d252f38fb",
  "expires_in": 10159,
  "scope": "USER GROUP",
  "refresh_token_exp": 1686217896
}
Example Request
POST /oauth/token?grant_type=refresh_token&refresh_token=96a9e748-8cad-4a29-b371-0a7d252f38fb HTTP/1.1
Authorization: Basic {your-basic-authentication-value}
Host: stage-openapi-auth.meditlink.com

2. OpenAPI Overview

2.1 URI Schema

https://stage-openapi-resources.meditlink.com/{ver}/...

2.2 Version information

path parameter Type Description

{ver}

string

API Version, current support v1


2.3 Error Handling

2.3.1 HTTP status codes

MeditLink OpenAPI services use standard HTTP status response codes in the response header to indicate whether a request completed successfully or not. A 2xx type response indicates success. A 4xx type response indicates a failure in handling a request. For example, an error caused by a request containing an invalid parameter. A 5xx type response usually indicates an internal server error.

RESTful notes tries to adhere as closely as possible to standard HTTP and REST conventions in its use of HTTP status codes.

Status code Description

200

The request completed successfully

204

The requested list could not be found

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

409

The requested resource Duplicated

429

Too many requests.

500

Internal Server Error

2.3.2 Error Response Schema

Most errors are typically indicated by a 4xx or 5xx HTTP status code in the response header. The JSON payload body may provide details of the error that occured. The body structure of the error response payload generated for MeditLink OpenAPI errors is as below.

{
  "timestamp": "2019-01-02T05:21:38.298Z",
  "status": 400,
  "error": "unsupported_grant_type",
  "message": "Unsupported grant type: password",
  "path": "/v1/user/username@mail.com"
}
Field Type Description

timestamp

String

API Response time

status

Number

Http Status code

error

String

A code that identifies the error type.

message

String

A short, generic description of the error, meant for an end-user audience.

path

String

Requested API URL


3. Resources

3.1.User

3.1.1 Get user information about me

Resource Information
GET /{ver}/me

Authentication

required

Required OAuth Scopes

USER

Data Format

JSON

API Request Throttling

5 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null.

Bearer <token>

x-meditlink-client-id

string

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null.

2.2 Version information.

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

Response Body Structure
{
  "schemaVersion" : "s1",
  "dateUpdated" : "2021-12-30T00:57:23Z",
  "dateCreated" : "2019-01-25T01:32:13Z",
  "email" : "meditlink.api.clinic@medit.com",
  "name" : "D.Davis",
  "profileImage" : {
    "name" : "profile.png",
    "size" : 4921,
    "hashValue" : "922d4be136d23dd18e0ca14ee49cfdd2",
    "hashAlgorithm" : "MD5",
    "uuid" : "c09cf002-8d74-0e2b-874a-0735574c8e30",
    "url" : "https://com-meditlink-group-files-global-dev-aws.s3.amazonaws.com/74VdO/users/gPplW/profile.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20231207T071043Z&X-Amz-SignedHeaders=host&X-Amz-Expires=299&X-Amz-Credential=AKIAYIA5BBFU5C6IMMWG%2F20231207%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=68f6e5be00f367f568e32e696a71c078170f3581bf902c9e440031a58bcef830",
    "dateExpired" : "2023-12-07T07:15:43.876Z"
  },
  "group" : {
    "dateUpdated" : "2020-05-29T01:59:10Z",
    "dateCreated" : "2019-01-25T01:32:13Z",
    "uuid" : "RC5EQVZJU18xNTQ4Mzc5OTMzODc0",
    "name" : "D.Davis",
    "description" : "",
    "type" : "CLINIC"
  }
}
Field Type Description

schemaVersion

String

json structure schema version

dateUpdated

String

last modified Date and Time about User Data

dateCreated

String

created Date and Time about User Data

email

String

Email

name

String

Name

profileImage

Object

profile image information

  profileImage.uuid

String

The unique identifier of a profile image

  profileImage.name

String

name of image

  profileImage.size

Number

size of file

  profileImage.hashValue

String

hash value of file

  profileImage.hashAlgorithm

String

hash algorithm

  profileImage.url

String

Download URL of profile image

  profileImage.dateExpired

String

Expiration date available for download

group

Object

Group information

  group.dateUpdated

String

last modified Date and Time about Group Data

  group.dateCreated

String

created Date and Time about Group Data

  group.uuid

String

The unique identifier of a Group

  group.name

String

name of Group

  group.description

String

Description of Group

  group.type

String

Group Type

Example Request
GET /v1/me?schema=latest HTTP/1.1
Authorization: Bearer 8bc2b700-2d33-403b-8c23-c5c59fc06495
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
Host: stage-openapi-resources.meditlink.com
HTTP Status codes
Status code Description

200

The request completed successfully

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

429

Too many requests.

500

Internal Server Error


3.1.2 Get user by user email

Resource Information
GET /{ver}/users/{userEmail}

Authentication

required

Required OAuth Scopes

USER

Data Format

JSON

API Request Throttling

5 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null.

Bearer <token>

x-meditlink-client-id

string

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null.

2.2 Version information.

userEmail

string

Must be a well-formed email address.
Must not be null.

User Email

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

Response Body Structure
{
  "schemaVersion" : "s1",
  "dateUpdated" : "2021-12-30T00:57:23Z",
  "dateCreated" : "2019-01-25T01:32:13Z",
  "email" : "meditlink.api.clinic@medit.com",
  "name" : "D.Davis",
  "profileImage" : {
    "name" : "profile.png",
    "size" : 4921,
    "hashValue" : "922d4be136d23dd18e0ca14ee49cfdd2",
    "hashAlgorithm" : "MD5",
    "uuid" : "c09cf002-8d74-0e2b-874a-0735574c8e30",
    "url" : "https://com-meditlink-group-files-global-dev-aws.s3.amazonaws.com/74VdO/users/gPplW/profile.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20231207T071059Z&X-Amz-SignedHeaders=host&X-Amz-Expires=299&X-Amz-Credential=AKIAYIA5BBFU5C6IMMWG%2F20231207%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=1250523bfb25de5210cb7bb28dfccf120bc3b4e9fa2c80f34a3f0e4cf53f32bc",
    "dateExpired" : "2023-12-07T07:15:59.585Z"
  },
  "group" : {
    "dateUpdated" : "2020-05-29T01:59:10Z",
    "dateCreated" : "2019-01-25T01:32:13Z",
    "uuid" : "RC5EQVZJU18xNTQ4Mzc5OTMzODc0",
    "name" : "D.Davis",
    "description" : "",
    "type" : "CLINIC"
  }
}
Field Type Description

schemaVersion

String

json structure schema version

dateUpdated

String

last modified Date and Time about User Data

dateCreated

String

created Date and Time about User Data

email

String

Email

name

String

Name

profileImage

Object

profile image information

  profileImage.uuid

String

The unique identifier of a profile image

  profileImage.name

String

name of image

  profileImage.size

Number

size of file

  profileImage.hashValue

String

hash value of file

  profileImage.hashAlgorithm

String

hash algorithm

  profileImage.url

String

Download URL of profile image

  profileImage.dateExpired

String

Expiration date available for download

group

Object

Group information

  group.dateUpdated

String

last modified Date and Time about Group Data

  group.dateCreated

String

created Date and Time about Group Data

  group.uuid

String

The unique identifier of a Group

  group.name

String

name of Group

  group.description

String

Description of Group

  group.type

String

Group Type

Example Request
GET /v1/users/meditlink.api.clinic@medit.com?schema=latest HTTP/1.1
Authorization: Bearer 8bc2b700-2d33-403b-8c23-c5c59fc06495
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
Host: stage-openapi-resources.meditlink.com
HTTP Status codes
Status code Description

200

The request completed successfully

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

429

Too many requests.

500

Internal Server Error


3.2. Group

3.2.1 Get Group

Resource Information
GET /{ver}/groups/{groupUuid}

Authentication

required

Required OAuth Scopes

GROUP

Data Format

JSON

API Request Throttling

5 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null.

Bearer <token>

x-meditlink-client-id

string

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null.

2.2 Version information.

groupUuid

string

Must not be null.

The unique identifier of a Group

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

Response Body Structure
{
  "dateUpdated" : "2020-05-29T01:59:10Z",
  "dateCreated" : "2019-01-25T01:32:13Z",
  "uuid" : "RC5EQVZJU18xNTQ4Mzc5OTMzODc0",
  "name" : "D.Davis",
  "description" : "",
  "type" : "CLINIC",
  "contact" : {
    "userName" : "D.Davis",
    "cellPhone" : "10-9876-5432",
    "officePhone" : "2193-9600"
  },
  "address" : {
    "state" : "Seoul",
    "city" : "Seongbuk-gu",
    "postal" : "02855",
    "detail1" : "Medit Company, 19 Inchon-ro 22-gil",
    "detail2" : ""
  },
  "homePage" : "https://www.medit.com",
  "files" : [ {
    "uuid" : "4cfe5fca-dc5d-fefb-7cab-537a5bcd298a",
    "size" : 4233,
    "mimeType" : "image/png",
    "fileType" : "COVER_IMAGE",
    "url" : "https://s3.amazonaws.com/74VdO/images/4cfe5fca-dc5d-fefb-7cab-537a5bcd298a",
    "dateUpdated" : "2019-04-24T05:31:03Z",
    "dateCreated" : "2019-04-24T05:31:03Z"
  }, {
    "uuid" : "e7322566-24cd-1a0a-c7f6-7a5cbbd17565",
    "size" : 5178,
    "mimeType" : "image/png",
    "fileType" : "LOGO_IMAGE",
    "url" : "https://s3.amazonaws.com/74VdO/images/e7322566-24cd-1a0a-c7f6-7a5cbbd17565",
    "dateUpdated" : "2019-04-24T05:31:03Z",
    "dateCreated" : "2019-04-24T05:31:03Z"
  }, {
    "uuid" : "fb8d4d19-ec65-3840-eecc-147ef34f1078",
    "size" : 179564,
    "mimeType" : "image/png",
    "fileType" : "INTRO_PHOTO",
    "url" : "https://s3.amazonaws.com/74VdO/images/photos/fb8d4d19-ec65-3840-eecc-147ef34f1078",
    "dateUpdated" : "2019-04-24T05:31:03Z",
    "dateCreated" : "2019-04-24T05:31:03Z"
  }, {
    "uuid" : "cfb1e20e-4c69-f120-2e97-6e54354766c6",
    "size" : 58683,
    "mimeType" : "image/jpeg",
    "fileType" : "INTRO_PHOTO",
    "url" : "https://s3.amazonaws.com/74VdO/images/photos/cfb1e20e-4c69-f120-2e97-6e54354766c6",
    "dateUpdated" : "2019-04-24T05:36:24Z",
    "dateCreated" : "2019-04-24T05:36:24Z"
  } ],
  "schemaVersion" : "s1"
}
Field Type Description

schemaVersion

String

json structure schema version

dateUpdated

String

last modified Date and Time about Group Data

dateCreated

String

created Date and Time about Group Data

uuid

String

The unique identifier of a Group

name

String

name of Group

description

String

Description of Group

type

String

The Type of Group Group Type

contact

Object

Contact information of Group

  contact.userName

String

user name

  contact.cellPhone

String

cell-phone number

  contact.officePhone

String

office number

address

Object

Address information of Group

  address.state

String

state of address

  address.city

String

city of address

  address.postal

String

zip/postal of address

  address.detail1

String

additional information of address

  address.detail2

String

additional information of address

homePage

String

homepage url of Group

files

Array

Address information of Group

  files[].dateUpdated

String

last modified Date and Time about File

  files[].dateCreated

String

created Date and Time about File

  files[].uuid

String

The unique identifier of a File

  files[].size

Number

size of File

  files[].mimeType

String

MIME Type of File

  files[].fileType

String

Type of File Group File Type

  files[].url

String

Download URL of file

Example Request
GET /v1/groups/RC5EQVZJU18xNTQ4Mzc5OTMzODc0?schema=latest HTTP/1.1
Authorization: Bearer 8bc2b700-2d33-403b-8c23-c5c59fc06495
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
Host: stage-openapi-resources.meditlink.com
HTTP Status codes
Status code Description

200

The request completed successfully

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

429

Too many requests.

500

Internal Server Error


3.3. Case

3.3.1 Get Cases

Resource Information
GET /{ver}/cases/search

Authentication

required

Required OAuth Scopes

CASE

Data Format

JSON

API Request Throttling

5 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null.

Bearer <token>

x-meditlink-client-id

string

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

x-meditlink-group-uuid

string

The unique identifier of a Group

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null.

2.2 Version information.

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

size

int

Must be at least 1.
Must be at most 100.
Must not be null.

request size of list. (default 20)

page

int

Must be at least 0.
Must be at most 1000.
Must not be null.

request page of list, (default 0)

start

long

Must be at least 0.
Must be at most 253402300799000.
Must not be null.

search by start of dateCreated timestamp, Assuming that this timestamp is in milliseconds

end

long

Must be at least 0.
Must be at most 253402300799000.
Must not be null.

search by end of dateCreated timestamp, Assuming that this timestamp is in milliseconds

name

string

search by name field

status

string

search by status field Case Status

Response Body Structure
{
  "schemaVersion" : "s1",
  "first" : true,
  "last" : false,
  "size" : 2,
  "content" : [ {
    "dateUpdated" : "2023-12-07T07:07:14Z",
    "dateCreated" : "2021-04-13T01:25:54Z",
    "dateScanned" : "2021-04-13T01:49:55Z",
    "uuid" : "72218637-46a3-4a9c-a675-399e668dd8ff",
    "name" : "Seolah.Jeon's Case",
    "status" : "SCAN",
    "tags" : [ "Dental", "Case", "Medit" ],
    "patient" : {
      "name" : "Seolah.Jeon",
      "code" : "201222039"
    }
  }, {
    "dateUpdated" : "2019-05-15T09:13:32Z",
    "dateCreated" : "2019-05-15T05:30:04Z",
    "dateScanned" : "",
    "uuid" : "74707ab5-6084-4a61-bddb-b2eb6c8cd89b",
    "name" : "David Back's Case - clone",
    "status" : "FORM",
    "tags" : [ "One", "Two", "Three" ],
    "patient" : {
      "name" : "David Back",
      "code" : ""
    }
  } ],
  "totalPage" : 5,
  "page" : 0,
  "totalElements" : 10,
  "numberOfElements" : 2
}
Field Type Description

schemaVersion

String

json structure schema version

size

Number

request size of list

page

Number

request page of list

first

Boolean

returns whether the current is the first one

last

Boolean

returns whether the current is the last one

totalPage

Number

returns whether the page total count

totalElements

Number

returns whether the total elements count

numberOfElements

Number

returns the number of elements currently on this

content

Array

Cases of Group

  content[].dateUpdated

String

last modified Date and Time about Case

  content[].dateCreated

String

created Date and Time about Case

  content[].dateScanned

String

last scanned Date and Time about Case

  content[].uuid

String

The unique identifier of a Case

  content[].name

String

name of Case

  content[].status

String

The Status of Case Case Status

  content[].tags

Array

Tags entered for the case.
Labs can only see tags entered by a clinic when the clinic checks the “Include tags in the order” option when ordering the case.
Even if no tags are shared by the clinic, labs can still see the tags entered by themselves.

  content[].patient

Object

Patient Information

    content[].patient.name

String

name of Patient. For Labs, the patient.name value can only be checked if the ‘Share Patient Name’ setting is allowed when Clinic makes an order. ref) Medit Link Workflow for Clinics: Ordering from Labs

    content[].patient.code

String

code of Patient. For Labs, patient.code cannot be seen or used because it is not shared when Clinic makes an order.

Example Request
GET /v1/cases/search?schema=latest&size=2&page=0&start=1504717228000&end=1701932925934&name=&status= HTTP/1.1
Authorization: Bearer 8bc2b700-2d33-403b-8c23-c5c59fc06495
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
x-meditlink-group-uuid: RC5EQVZJU18xNTQ4Mzc5OTMzODc0
Host: stage-openapi-resources.meditlink.com
HTTP Status codes
Status code Description

200

The request completed successfully

204

The requested list could not be found

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

429

Too many requests.

500

Internal Server Error


3.3.2 Get Case

Resource Information
GET /{ver}/cases/{caseUuid}

Authentication

required

Required OAuth Scopes

CASE

Data Format

JSON

API Request Throttling

5 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null.

Bearer <token>

x-meditlink-client-id

string

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

x-meditlink-group-uuid

string

The unique identifier of a Group

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null.

2.2 Version information.

caseUuid

string

Must not be null.

The unique identifier of a Case

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

Response Body Structure
{
  "dateUpdated" : "2023-12-07T07:07:14Z",
  "dateCreated" : "2021-04-13T01:25:54Z",
  "dateScanned" : "2021-04-13T01:49:55Z",
  "uuid" : "72218637-46a3-4a9c-a675-399e668dd8ff",
  "name" : "Seolah.Jeon's Case",
  "status" : "SCAN",
  "tags" : [ "Dental", "Case", "Medit" ],
  "patient" : {
    "name" : "Seolah.Jeon",
    "code" : "201222039"
  },
  "files" : [ {
    "name" : "mandibular.meditMesh",
    "size" : 3197161,
    "uuid" : "97f54290-943a-418f-8a2f-fa67da83e643",
    "dateUpdated" : "2021-04-13T05:14:28Z",
    "dateCreated" : "2021-04-13T01:53:52Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "maxillary.meditMesh",
    "size" : 4650526,
    "uuid" : "97d5d5d3-e282-4e27-9fea-5ccf4f418bb9",
    "dateUpdated" : "2021-04-13T05:14:28Z",
    "dateCreated" : "2021-04-13T01:53:52Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "occlusionfirst.meditMesh",
    "size" : 682241,
    "uuid" : "9c142b25-9d08-4495-899a-d31931ac2df6",
    "dateUpdated" : "2021-04-13T05:14:28Z",
    "dateCreated" : "2021-04-13T01:53:52Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "occlusionsecond.meditMesh",
    "size" : 1036449,
    "uuid" : "e5c3679b-b6ce-4b35-8b7a-8ec1ba64fc9a",
    "dateUpdated" : "2021-04-13T05:14:28Z",
    "dateCreated" : "2021-04-13T01:53:53Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "occlusion_1_raw.meditGroupInfo",
    "size" : 1005,
    "uuid" : "9717a722-c458-4f16-891b-a0a9bfbe8ed1",
    "dateUpdated" : "2021-04-13T05:14:29Z",
    "dateCreated" : "2021-04-13T01:41:51Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "occlusion_2_raw.meditGroupInfo",
    "size" : 1005,
    "uuid" : "8156ec50-9cbf-490e-9535-c402e965e108",
    "dateUpdated" : "2021-04-13T05:14:29Z",
    "dateCreated" : "2021-04-13T01:41:51Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "occlusion_3_raw.meditGroupInfo",
    "size" : 1015,
    "uuid" : "31c7a119-634f-4c1f-b1b1-c94e4009bd5f",
    "dateUpdated" : "2021-04-13T05:14:29Z",
    "dateCreated" : "2021-04-13T01:50:20Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "mandibular.meditMesh",
    "size" : 3197161,
    "uuid" : "34134ead-e868-465b-8b3b-14110869fd10",
    "dateUpdated" : "2021-04-13T05:14:29Z",
    "dateCreated" : "2021-04-13T01:53:53Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "maxillary.meditMesh",
    "size" : 4650526,
    "uuid" : "91f9ff74-8527-4b3a-93da-091e2e84fcf9",
    "dateUpdated" : "2021-04-13T05:14:29Z",
    "dateCreated" : "2021-04-13T01:53:53Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "occlusionfirst.meditMesh",
    "size" : 1370100,
    "uuid" : "25b02cb1-e543-44c3-8d91-e405f2284f92",
    "dateUpdated" : "2021-04-13T05:14:29Z",
    "dateCreated" : "2021-04-13T01:53:53Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "occlusionsecond.meditMesh",
    "size" : 916556,
    "uuid" : "05038cbe-afe6-4aa5-b1c4-f0975c4a9e1e",
    "dateUpdated" : "2021-04-13T05:14:29Z",
    "dateCreated" : "2021-04-13T01:53:53Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "mandibular.meditMesh",
    "size" : 3197161,
    "uuid" : "46c95f99-6074-4c52-b5f4-0af29b2ec645",
    "dateUpdated" : "2021-04-13T05:14:29Z",
    "dateCreated" : "2021-04-13T01:53:53Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "maxillary.meditMesh",
    "size" : 4650526,
    "uuid" : "9b5b9eef-68cf-42aa-b0dd-4c9adc85aa19",
    "dateUpdated" : "2021-04-13T05:14:29Z",
    "dateCreated" : "2021-04-13T01:53:53Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "occlusionfirst.meditMesh",
    "size" : 1616655,
    "uuid" : "3bdc9c40-189f-4642-8108-37ce6cb43a0b",
    "dateUpdated" : "2021-04-13T05:14:29Z",
    "dateCreated" : "2021-04-13T01:53:53Z",
    "fileType" : "SCAN_DATA"
  }, {
    "name" : "occlusionsecond.meditMesh",
    "size" : 858497,
    "uuid" : "80201013-f5a0-46fa-af2c-6bbc5242eb79",
    "dateUpdated" : "2021-04-13T05:14:29Z",
    "dateCreated" : "2021-04-13T01:53:53Z",
    "fileType" : "SCAN_DATA"
  } ],
  "formInformation" : {
    "type" : "TEETH",
    "items" : [ {
      "category" : "CROWN",
      "categoryDisplayName" : "Crown",
      "method" : "ANATOMIC",
      "methodDisplayName" : "Anatomic",
      "material" : "ZIRCONIA",
      "materialDisplayName" : "Zirconia",
      "shade" : "NONE_SHADE",
      "toothNo" : 45,
      "jawType" : "",
      "multiDieNo" : 0
    }, {
      "category" : "PONTIC",
      "categoryDisplayName" : "Pontic",
      "method" : "ANATOMIC",
      "methodDisplayName" : "Anatomic",
      "material" : "ZIRCONIA",
      "materialDisplayName" : "Zirconia",
      "shade" : "NONE_SHADE",
      "toothNo" : 46,
      "jawType" : "",
      "multiDieNo" : 0
    }, {
      "category" : "CROWN",
      "categoryDisplayName" : "Crown",
      "method" : "ANATOMIC",
      "methodDisplayName" : "Anatomic",
      "material" : "ZIRCONIA",
      "materialDisplayName" : "Zirconia",
      "shade" : "NONE_SHADE",
      "toothNo" : 47,
      "jawType" : "",
      "multiDieNo" : 0
    } ]
  },
  "multiOcclusionGroup" : [ {
    "groupId" : 1,
    "groupName" : "CO Bite",
    "files" : [ "97f54290-943a-418f-8a2f-fa67da83e643", "97d5d5d3-e282-4e27-9fea-5ccf4f418bb9", "9c142b25-9d08-4495-899a-d31931ac2df6", "e5c3679b-b6ce-4b35-8b7a-8ec1ba64fc9a", "9717a722-c458-4f16-891b-a0a9bfbe8ed1" ]
  }, {
    "groupId" : 2,
    "groupName" : "CR Bite",
    "files" : [ "8156ec50-9cbf-490e-9535-c402e965e108", "34134ead-e868-465b-8b3b-14110869fd10", "91f9ff74-8527-4b3a-93da-091e2e84fcf9", "25b02cb1-e543-44c3-8d91-e405f2284f92", "05038cbe-afe6-4aa5-b1c4-f0975c4a9e1e" ]
  }, {
    "groupId" : 3,
    "groupName" : "Lateral Bite",
    "files" : [ "31c7a119-634f-4c1f-b1b1-c94e4009bd5f", "46c95f99-6074-4c52-b5f4-0af29b2ec645", "9b5b9eef-68cf-42aa-b0dd-4c9adc85aa19", "3bdc9c40-189f-4642-8108-37ce6cb43a0b", "80201013-f5a0-46fa-af2c-6bbc5242eb79" ]
  } ],
  "bridges" : [ [ 15, 14, 13, 12 ], [ 26, 27 ], [ 36, 35, 34 ] ],
  "schemaVersion" : "s1"
}
Field Type Description

schemaVersion

String

json structure schema version

dateUpdated

String

last modified Date and Time about Case

dateCreated

String

created Date and Time about Case

dateScanned

String

last scanned Date and Time about Case

uuid

String

The unique identifier of a Case

name

String

name of Case

status

String

The Status of Case Case Status

tags

Array

Tags entered for the case.
Labs can only see tags entered by a clinic when the clinic checks the “Include tags in the order” option when ordering the case.
Even if no tags are shared by the clinic, labs can still see the tags entered by themselves.

patient

Object

Patient Information

  patient.name

String

name of Patient. For Labs, the patient.name value can only be checked if the ‘Share Patient Name’ setting is allowed when Clinic makes an order. ref) Medit Link Workflow for Clinics: Ordering from Labs

  patient.code

String

code of Patient. For Labs, patient.code cannot be seen or used because it is not shared when Clinic makes an order.

files

Array

File list of Case

  files[].dateUpdated

String

last modified Date and Time about File

  files[].dateCreated

String

created Date and Time about File

  files[].uuid

String

The unique identifier of a File

  files[].name

String

name of File

  files[].size

Number

size of File

  files[].fileType

String

Type of File Case File Type

formInformation

Object

Form Information

  formInformation.type

String

Case Form Information Type

  formInformation.items

Array

    formInformation.items[].category

String

Dental Product Category

    formInformation.items[].categoryDisplayName

String

    formInformation.items[].material

String

Dental Product Material

    formInformation.items[].materialDisplayName

String

    formInformation.items[].method

String

Dental Product Method

    formInformation.items[].methodDisplayName

String

    formInformation.items[].shade

String

    formInformation.items[].toothNo

Number

    formInformation.items[].jawType

String

Jaw Type

    formInformation.items[].multiDieNo

Number

multiOcclusionGroup

Array

This information is about Occlusion groups created using the Multi Occlusion function in Medit Scan for Clinics.

  multiOcclusionGroup[].groupId

Number

Occlusion Group ID

  multiOcclusionGroup[].groupName

String

name of Occlusion Group

  multiOcclusionGroup[].files

Array

uuid list of case files associated with the occlusion group. #Ref : files[].uuid

bridges

Array

Information about connecting two or more prosthetics.

Example Request
GET /v1/cases/72218637-46a3-4a9c-a675-399e668dd8ff?schema=latest HTTP/1.1
Authorization: Bearer 8bc2b700-2d33-403b-8c23-c5c59fc06495
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
x-meditlink-group-uuid: RC5EQVZJU18xNTQ4Mzc5OTMzODc0
Host: stage-openapi-resources.meditlink.com
HTTP Status codes
Status code Description

200

The request completed successfully

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

429

Too many requests.

500

Internal Server Error


3.4. File

3.4.1 Get File

Resource Information
GET /{ver}/files/{fileUuid}

Authentication

required

Required OAuth Scopes

FILE

Data Format

JSON

API Request Throttling

10 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null.

Bearer <token>

x-meditlink-client-id

string

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

x-meditlink-group-uuid

string

The unique identifier of a Group

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null.

2.2 Version information.

fileUuid

string

Must not be null.

The unique identifier of a File

Request Query Parameters
Parameter Type Constraints Description

type

string

Type of meditMesh file you want to convert. Do not use type parameters if you want to download the original file. Case File Convert Type

Response Body Structure
{
  "uuid" : "930449b1-76b4-479e-b1a7-a57e65d9d172",
  "url" : "https://com-meditlink-case-files-ap-northeast-2-dev-aws.s3.ap-northeast-2.amazonaws.com/us-east-1%3Ad5f87fb1-c190-426d-afd3-2b64dd3e4310/convert-930449b1-76b4-479e-b1a7-a57e65d9d172/930449b1-76b4-479e-b1a7-a57e65d9d172.obj.7z?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20231207T071002Z&X-Amz-SignedHeaders=host&X-Amz-Expires=299&X-Amz-Credential=AKIAYIA5BBFU5C6IMMWG%2F20231207%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=c6dde4f08d8212e09001c8abf804c746a77e82f24f26492ec1e84f24db451ec6",
  "downloadFileName" : "930449b1-76b4-479e-b1a7-a57e65d9d172.obj.7z",
  "dateExpired" : "2023-12-07T07:15:02.627Z",
  "items" : [ {
    "name" : "mandible.obj",
    "size" : 25129108,
    "hashValue" : "5f5d079910a276b68ff863f02d12c992",
    "hashAlgorithm" : "MD5"
  } ],
  "schemaVersion" : "s1"
}
Field Type Description

schemaVersion

String

json structure schema version

  uuid

String

The unique identifier of a File

  items

Array

items of a compressed 7z file

    items[].name

String

name of File

    items[].size

Number

size of File

    items[].hashValue

String

hash value of File

    items[].hashAlgorithm

String

hash algorithm

  url

String

Download URL of File(5 Minutes)

  downloadFileName

String

Name of Download File

  dateExpired

String

Expiration date available for download

Example Request
GET /v1/files/930449b1-76b4-479e-b1a7-a57e65d9d172?type=obj HTTP/1.1
Authorization: Bearer 8bc2b700-2d33-403b-8c23-c5c59fc06495
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
x-meditlink-group-uuid: RC5EQVZJU18xNTQ4Mzc5OTMzODc0
Host: stage-openapi-resources.meditlink.com
HTTP Status codes
Status code Description

200

The request completed successfully

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

429

Too many requests.

500

Internal Server Error


3.4.2 Register File information

First of all, please understand How to attach a file and use the API.
Resource Information
POST /{ver}/files

Authentication

required

Required OAuth Scopes

FILE:MANAGE

Data Format

JSON

API Request Throttling

5 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null.

Bearer <token>

x-meditlink-client-id

string

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

x-meditlink-group-uuid

string

The unique identifier of a Group

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null.

2.2 Version information.

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

Request Body Structure
{
  "caseUuid" : "72218637-46a3-4a9c-a675-399e668dd8ff",
  "name" : "mandible.obj",
  "size" : 13612946,
  "hashValue" : "vZ2A+bV5ZH3HZx51JAMhzA==",
  "callbackUrl" : "https://webhook.site/e3c0464d-d9d4-4f8b-b94f-c69861a273f4"
}
Name Type Constraints Description

caseUuid

String

Must not be blank.

The unique identifier of a Case

name

String

Must not be blank.
Size must be between 1 and 100 inclusive.
Some special characters cannot be used..

name of File

size

Number

Must be at least 1.
Must be at most 104857600.

size of File (byte)

hashValue

String

Must not be blank.
Size must be between 1 and 32 inclusive.

hash value of File, Base64 encode MD5 hash value. Generate a file hash value

callbackUrl

String

Must URL Pattern.
Must not be blank.
Size must be between 1 and 256 inclusive.

URL to return the file upload process result

Response Body Structure
{
  "uuid" : "0027931e-bd07-4737-8bb1-0fb12c77d064",
  "uploadUrl" : "https://com-meditlink-case-files-dev.s3.amazonaws.com/.openapi/us-east-1%3Ad5f87fb1-c190-426d-afd3-2b64dd3e4310/0027931e-bd07-4737-8bb1-0fb12c77d064.tmp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220922T013337Z&X-Amz-SignedHeaders=content-md5%3Bhost&X-Amz-Expires=1799&X-Amz-Credential=AKIAYIA5BBFUYGAOPOMS%2F20220922%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=da457efadfe26b14a1dd87a17754003888f60f10e1668a1bdcb82e04056bc910",
  "dateExpired" : "2022-09-22T02:03:37.599Z",
  "item" : {
    "name" : "mandible.obj",
    "size" : 13612946,
    "hashValue" : "bd9d80f9b579647dc7671e75240321cc",
    "hashAlgorithm" : "MD5"
  },
  "schemaVersion" : "s1"
}
Field Type Description

schemaVersion

String

json structure schema version

  uuid

String

The unique identifier of a File

  uploadUrl

String

Upload URL of File, [how_to_upload_file]

  dateExpired

String

Expiration date available for upload(30 Minutes)

  item

Object

items of a compressed 7z file

    item.name

String

name of File

    item.size

Number

size of File

    item.hashValue

String

hash value of File

    item.hashAlgorithm

String

hash algorithm

Example Request
POST /v1/files?schema=latest HTTP/1.1
Authorization: Bearer 8bc2b700-2d33-403b-8c23-c5c59fc06495
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
Content-Length: 228
x-meditlink-group-uuid: RC5EQVZJU18xNTQ4Mzc5OTMzODc0
Host: stage-openapi-resources.meditlink.com

{
  "caseUuid" : "72218637-46a3-4a9c-a675-399e668dd8ff",
  "name" : "mandible.obj",
  "size" : 13612946,
  "hashValue" : "vZ2A+bV5ZH3HZx51JAMhzA==",
  "callbackUrl" : "https://webhook.site/e3c0464d-d9d4-4f8b-b94f-c69861a273f4"
}
HTTP Status codes
Status code Description

200

The request completed successfully

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

409

The requested resource Duplicated

500

Internal Server Error


3.4.3 Upload File

Uploading files to the cloud uses the Amazon S3 (Simple Storage Service) pre-signed upload URL.
You can google "AWS S3 pre-signed url upload example" for various use cases.
ref. https://www.google.com/search?q=aws+s3+presigned+url+upload+example

Resource Information
PUT {uploadUrl}
Request Headers
Name Type Constraints Description

Content-MD5

string

Must not be null.

Generate a file hash value

Example Request
PUT /.openapi/us-east-1%3Ac803ab4c-a64e-49c0-abfd-7512802b9c5c/162ec8a8-9c45-479f-9f01-ad5ebb5bc27e.tmp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220921T050850Z&X-Amz-SignedHeaders=content-md5%3Bhost&X-Amz-Expires=1799&X-Amz-Credential=AKIAYLZZ3NLKN7USRAD7%2F20220921%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=2d48b4e0c33cbe725076f2ba1ae0b3ddf9f36153a004bbe79e2f8a5136df3aea HTTP/1.1
Host: com-meditlink-case-files-dev.s3.amazonaws.com
Content-MD5: vZ2A+bV5ZH3HZx51JAMhzA==
Content-Type: model/obj
Content-Length: 22

<file contents here>

3.4.4 Delete File

Resource Information
DELETE /{ver}/files/{fileUuid}

Authentication

required

Required OAuth Scopes

FILE:MANAGE

Data Format

JSON

API Request Throttling

10 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null.

Bearer <token>

x-meditlink-client-id

string

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

x-meditlink-group-uuid

string

The unique identifier of a Group

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null.

2.2 Version information.

fileUuid

string

Must not be null.

The unique identifier of a File

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

Response Body Structure
{
  "name" : "mandible.obj.general.meditMesh",
  "size" : 13612946,
  "uuid" : "a1bc5fd2-165a-447d-a1c1-28340aa038e0",
  "dateUpdated" : "2023-12-07T07:09:37Z",
  "dateCreated" : "2023-12-07T07:09:37Z",
  "fileType" : "ATTACHED_DATA"
}
Field Type Description

name

String

name of File

size

Number

size of File

uuid

String

The unique identifier of a File

fileType

String

Type of File Case File Type

dateUpdated

String

last modified Date and Time about File

dateCreated

String

created Date and Time about File

Example Request
DELETE /v1/files/a1bc5fd2-165a-447d-a1c1-28340aa038e0?schema=latest HTTP/1.1
Authorization: Bearer 8bc2b700-2d33-403b-8c23-c5c59fc06495
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
x-meditlink-group-uuid: RC5EQVZJU18xNTQ4Mzc5OTMzODc0
Host: stage-openapi-resources.meditlink.com
HTTP Status codes
Status code Description

200

The request completed successfully

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

500

Internal Server Error


3.5. Order

3.5.1 Get Orders

Resource Information
GET /{ver}/orders/search

Authentication

required

Required OAuth Scopes

ORDER

Data Format

JSON

API Request Throttling

5 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null

Bearer <token>

x-meditlink-client-id

string

Must not be null

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

x-meditlink-group-uuid

string

Must not be null

The unique identifier of a Group

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null

2.2 Version information.

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

size

int

Must be at least 1. Must be at most 40. Must not be null

request size of list. (default 20)

page

int

Must be at least 0. Must be at most 1000. Must not be null

request page of list, (default 0)

start

long

Must be at least 0. Must be at most 253402300799000. Must not be null

search by start of dateUpdated timestamp, Assuming that this timestamp is in milliseconds

end

long

Must be at least 0. Must be at most 253402300799000. Must not be null

search by end of dateUpdated timestamp, Assuming that this timestamp is in milliseconds

status

string

search by status field Order Status

Response Body Structure
{
  "schemaVersion" : "s1",
  "first" : true,
  "last" : false,
  "size" : 2,
  "content" : [ {
    "dateUpdated" : "2023-07-05T10:14:24Z",
    "dateCreated" : "2021-04-13T05:14:27Z",
    "dateDesiredDelivery" : "2021-04-20T05:10:00Z",
    "status" : "PENDING",
    "buyer" : {
      "uuid" : "RC5EQVZJU18xNTQ4Mzc5OTMzODc0",
      "name" : "D.Davis",
      "type" : "CLINIC"
    },
    "seller" : {
      "uuid" : "T05FTEFCXzE1NDgzODA1Nzk0MzY=",
      "name" : "OneLab",
      "type" : "LAB"
    },
    "case" : {
      "uuid" : "72218637-46a3-4a9c-a675-399e668dd8ff",
      "name" : "Seolah.Jeon's Case",
      "status" : "SCAN",
      "tags" : [ "Dental", "Case", "Medit" ],
      "patient" : {
        "name" : "Seolah.Jeon",
        "code" : "201222039"
      }
    },
    "orderNumber" : 3706720
  }, {
    "dateUpdated" : "2019-05-15T09:13:33Z",
    "dateCreated" : "2019-05-15T09:13:31Z",
    "dateDesiredDelivery" : "2019-05-21T15:00:00Z",
    "status" : "PENDING",
    "buyer" : {
      "uuid" : "RC5EQVZJU18xNTQ4Mzc5OTMzODc0",
      "name" : "D.Davis",
      "type" : "CLINIC"
    },
    "seller" : {
      "uuid" : "T05FTEFCXzE1NDgzODA1Nzk0MzY=",
      "name" : "OneLab",
      "type" : "LAB"
    },
    "case" : {
      "uuid" : "74707ab5-6084-4a61-bddb-b2eb6c8cd89b",
      "name" : "David Back's Case - clone",
      "status" : "FORM",
      "tags" : [ "One", "Two", "Three" ],
      "patient" : {
        "name" : "David Back",
        "code" : ""
      }
    },
    "orderNumber" : 3700956
  } ],
  "totalPage" : 11,
  "page" : 0,
  "totalElements" : 22,
  "numberOfElements" : 2
}
Field Type Description

schemaVersion

String

json structure schema version

size

Number

request size of list

page

Number

request page of list

first

Boolean

returns whether the current is the first one

last

Boolean

returns whether the current is the last one

totalPage

Number

returns whether the page total count

totalElements

Number

returns whether the total elements count

numberOfElements

Number

returns the number of elements currently on this

content

Array

Cases of Group

content[].orderNumber

Number

Order Number

content[].dateUpdated

String

last modified Date and Time about Order

content[].dateCreated

String

created Date and Time about Order

content[].dateDesiredDelivery

String

Desired Delivery Date from Clinic

content[].status

String

The Status of Order Order Status

content[].buyer

Object

Buyer Group Information

  uuid

String

The unique identifier of a Group

  name

String

name of Group

  type

String

The Type of Group Group Type

content[].seller

Object

Seller Group Information

  uuid

String

The unique identifier of a Group

  name

String

name of Group

  type

String

The Type of Group Group Type

content[].case

Object

Case Information

  uuid

String

The unique identifier of a Case

  name

String

name of Case

  status

String

The Status of Case Case Status

  tags

Array

Tags entered for the case.
Labs can only see tags entered by a clinic when the clinic checks the “Include tags in the order” option when ordering the case.
Even if no tags are shared by the clinic, labs can still see the tags entered by themselves.

  patient

Object

Patient Information

    name

String

The patient name of Case.
For ordered cases, patient.name is only available for labs if the "Share patient information" option was checked by the clinic while placing an order. If not checked, the value of patient.name can be null. Refer to ref) Medit Link Workflow for Clinics: Ordering from Labs

    code

String

The patient ID of Case.
The patient ID is the information entered by a clinic. For ordered cases, patient.code is only available for labs if the "Share patient information"option was checked by the clinic while placing an order. If not checked, the value of patient.code can be null.

Example Request
GET /v1/orders/search?schema=latest&size=2&page=0&start=1504717228000&end=1701932662980&status=&status= HTTP/1.1
Authorization: Bearer 8bc2b700-2d33-403b-8c23-c5c59fc06495
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
x-meditlink-group-uuid: RC5EQVZJU18xNTQ4Mzc5OTMzODc0
Host: stage-openapi-resources.meditlink.com
HTTP Status codes
Status code Description

200

The request completed successfully

204

The requested list could not be found

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

429

Too many requests.

500

Internal Server Error


3.5.2 Get Order

Resource Information
GET /{ver}/orders/{orderNumber}

Authentication

required

Required OAuth Scopes

ORDER

Data Format

JSON

API Request Throttling

5 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null

Bearer <token>

x-meditlink-client-id

string

Must not be null

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

x-meditlink-group-uuid

string

Must not be null

The unique identifier of a Group uuid

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null

2.2 Version information.

orderNumber

string

Must not be null

Order Number

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

Response Body Structure
{
  "dateUpdated" : "2023-07-05T10:14:24Z",
  "dateCreated" : "2021-04-13T05:14:27Z",
  "dateDesiredDelivery" : "2021-04-20T05:10:00Z",
  "status" : "PENDING",
  "buyer" : {
    "dateUpdated" : "+52377-10-31T18:06:40Z",
    "dateCreated" : "+51036-03-17T00:56:40Z",
    "uuid" : "RC5EQVZJU18xNTQ4Mzc5OTMzODc0",
    "name" : "D.Davis",
    "description" : "",
    "type" : "CLINIC",
    "contact" : {
      "userName" : "D.Davis",
      "cellPhone" : "",
      "officePhone" : "2193-9600"
    },
    "address" : {
      "state" : "Seoul",
      "city" : "Seongbuk-gu",
      "postal" : "02855",
      "detail1" : "Medit Company, 19 Inchon-ro 22-gil",
      "detail2" : ""
    },
    "homePage" : ""
  },
  "seller" : {
    "dateUpdated" : "+51447-12-26T02:16:40Z",
    "dateCreated" : "+51036-03-24T12:23:20Z",
    "uuid" : "T05FTEFCXzE1NDgzODA1Nzk0MzY=",
    "name" : "OneLab",
    "description" : "",
    "type" : "LAB",
    "contact" : {
      "userName" : "Peter Parker",
      "cellPhone" : "",
      "officePhone" : "2193-9600"
    },
    "address" : {
      "state" : "Seoul",
      "city" : "Seongbuk-gu",
      "postal" : "02855",
      "detail1" : "Medit Company, 19 Inchon-ro 22-gil",
      "detail2" : ""
    },
    "homePage" : ""
  },
  "description" : "",
  "delivery" : [ ],
  "schemaVersion" : "s1",
  "case" : {
    "dateUpdated" : "2023-07-05T10:14:24Z",
    "dateCreated" : "2021-04-13T05:14:27Z",
    "dateScanned" : "",
    "uuid" : "bf335448-ebfc-4922-9b9e-d903b191ad7e",
    "name" : "Seolah.Jeon's Case",
    "status" : "SCAN",
    "tags" : [ "Dental", "Case", "Medit" ],
    "files" : [ {
      "uuid" : "746f4a30-6e6f-4e74-b305-6246b532f005",
      "name" : "maxillary.meditMesh",
      "size" : 4650526,
      "dateUpdated" : "2021-04-13T05:14:28Z",
      "dateCreated" : "2021-04-13T05:14:28Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "7de375a3-4f59-4e59-bce5-0a6889da2fda",
      "name" : "mandibular.meditMesh",
      "size" : 3197161,
      "dateUpdated" : "2021-04-13T05:14:28Z",
      "dateCreated" : "2021-04-13T05:14:28Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "16dfcbfb-e22a-4053-98ae-2a90f5ae779e",
      "name" : "occlusionfirst.meditMesh",
      "size" : 682241,
      "dateUpdated" : "2021-04-13T05:14:28Z",
      "dateCreated" : "2021-04-13T05:14:28Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "f9b62c52-2635-40e7-90fc-31bbbb7fca3d",
      "name" : "occlusionsecond.meditMesh",
      "size" : 1036449,
      "dateUpdated" : "2021-04-13T05:14:28Z",
      "dateCreated" : "2021-04-13T05:14:28Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "6dc4ac01-c090-4657-8738-5f914ce36f48",
      "name" : "occlusion_1_raw.meditGroupInfo",
      "size" : 1005,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "e8445f37-afe6-4ae1-9566-d00fe776f5ff",
      "name" : "occlusion_2_raw.meditGroupInfo",
      "size" : 1005,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "c69b4a82-fd39-4ad4-8456-64a8ee4b1a2b",
      "name" : "mandibular.meditMesh",
      "size" : 3197161,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "b3cac2af-0790-4084-953a-87909a498edb",
      "name" : "maxillary.meditMesh",
      "size" : 4650526,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "486df72c-31b7-41a8-948b-7fe7ebfbf7e0",
      "name" : "occlusionfirst.meditMesh",
      "size" : 1370100,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "1c4293b0-ad77-4302-b26f-84e99c74432b",
      "name" : "occlusionsecond.meditMesh",
      "size" : 916556,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "793bd5af-c9aa-4e87-94e8-7a0a87aeff75",
      "name" : "occlusion_3_raw.meditGroupInfo",
      "size" : 1015,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "c976cbbd-b134-4615-a00b-4d720dbdadc2",
      "name" : "mandibular.meditMesh",
      "size" : 3197161,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "d984fd87-a2dc-4c7a-a498-f27a36d373b5",
      "name" : "maxillary.meditMesh",
      "size" : 4650526,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "34eb5ba1-110f-4c16-ae63-c1057ef0155b",
      "name" : "occlusionfirst.meditMesh",
      "size" : 1616655,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "6a679fcd-e83d-4f1f-a3d4-9df8ad078784",
      "name" : "occlusionsecond.meditMesh",
      "size" : 858497,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    } ],
    "formInformation" : {
      "type" : "TEETH",
      "items" : [ {
        "category" : "CROWN",
        "categoryDisplayName" : "Crown",
        "method" : "ANATOMIC",
        "methodDisplayName" : "Anatomic",
        "material" : "ZIRCONIA",
        "materialDisplayName" : "Zirconia",
        "shade" : "NONE_SHADE",
        "toothNo" : 45,
        "jawType" : "",
        "multiDieNo" : 0
      }, {
        "category" : "PONTIC",
        "categoryDisplayName" : "Pontic",
        "method" : "ANATOMIC",
        "methodDisplayName" : "Anatomic",
        "material" : "ZIRCONIA",
        "materialDisplayName" : "Zirconia",
        "shade" : "NONE_SHADE",
        "toothNo" : 46,
        "jawType" : "",
        "multiDieNo" : 0
      }, {
        "category" : "CROWN",
        "categoryDisplayName" : "Crown",
        "method" : "ANATOMIC",
        "methodDisplayName" : "Anatomic",
        "material" : "ZIRCONIA",
        "materialDisplayName" : "Zirconia",
        "shade" : "NONE_SHADE",
        "toothNo" : 47,
        "jawType" : "",
        "multiDieNo" : 0
      } ]
    },
    "multiOcclusionGroup" : [ {
      "groupId" : 1,
      "groupName" : "CO Bite",
      "files" : [ "746f4a30-6e6f-4e74-b305-6246b532f005", "7de375a3-4f59-4e59-bce5-0a6889da2fda", "16dfcbfb-e22a-4053-98ae-2a90f5ae779e", "f9b62c52-2635-40e7-90fc-31bbbb7fca3d", "6dc4ac01-c090-4657-8738-5f914ce36f48" ]
    }, {
      "groupId" : 2,
      "groupName" : "CR Bite",
      "files" : [ "e8445f37-afe6-4ae1-9566-d00fe776f5ff", "c69b4a82-fd39-4ad4-8456-64a8ee4b1a2b", "b3cac2af-0790-4084-953a-87909a498edb", "486df72c-31b7-41a8-948b-7fe7ebfbf7e0", "1c4293b0-ad77-4302-b26f-84e99c74432b" ]
    }, {
      "groupId" : 3,
      "groupName" : "Lateral Bite",
      "files" : [ "793bd5af-c9aa-4e87-94e8-7a0a87aeff75", "c976cbbd-b134-4615-a00b-4d720dbdadc2", "d984fd87-a2dc-4c7a-a498-f27a36d373b5", "34eb5ba1-110f-4c16-ae63-c1057ef0155b", "6a679fcd-e83d-4f1f-a3d4-9df8ad078784" ]
    } ],
    "bridges" : [ [ 15, 14, 13, 12 ], [ 26, 27 ], [ 36, 35, 34 ] ],
    "patient" : {
      "name" : "Seolah.Jeon",
      "code" : ""
    }
  },
  "orderNumber" : 3706720
}
Field Type Description

schemaVersion

String

json structure schema version

orderNumber

Number

Order Number

dateUpdated

String

last modified Date and Time about Order

dateCreated

String

created Date and Time about Order

dateDesiredDelivery

String

Desired Delivery Date from Clinic

status

String

The Status of Order Order Status

description

String

Description of Order

delivery

Array

  dateUpdated

String

last modified Date and Time about Delivery

  dateScheduled

String

scheduled Date and Time about Delivery

  company

String

name of Delivery Company

  trackingNumber

String

tracking number by Delivery Company

  status

String

The Status of Delivery Order Delivery Status

  message

String

delivery message

buyer

Object

Buyer Group Information

  dateUpdated

String

last modified Date and Time about Group Data

  dateCreated

String

created Date and Time about Group Data

  uuid

String

The unique identifier of a Group

  name

String

name of Group

  description

String

Description of Group

  type

String

The Type of Group Group Type

  contact

Object

Contact information of Group

    userName

String

user name

    cellPhone

String

cell-phone number

    officePhone

String

office number

  address

Object

Address information of Group

    state

String

state of address

    city

String

city of address

    postal

String

zip/postal of address

    detail1

String

additional information of address

    detail2

String

additional information of address

  homePage

String

homepage url of Group

seller

Object

Seller Group Information

  dateUpdated

String

last modified Date and Time about Group Data

  dateCreated

String

created Date and Time about Group Data

  uuid

String

The unique identifier of a Group

  name

String

name of Group

  description

String

Description of Group

  type

String

The Type of Group Group Type

  contact

Object

Contact information of Group

    userName

String

user name

    cellPhone

String

cell-phone number

    officePhone

String

office number

  address

Object

Address information of Group

    state

String

state of address

    city

String

city of address

    postal

String

zip/postal of address

    detail1

String

additional information of address

    detail2

String

additional information of address

  homePage

String

homepage url of Group

case

Object

Case Information

  uuid

String

The unique identifier of a Case

  name

String

name of Case

  dateCreated

String

created Date and Time about Case

  dateUpdated

String

last modified Date and Time about Case

  dateScanned

String

last scanned Date and Time about Case

  status

String

The Status of Case Case Status

  tags

Array

Tags entered for the case.
Labs can only see tags entered by a clinic when the clinic checks the “Include tags in the order” option when ordering the case.
Even if no tags are shared by the clinic, labs can still see the tags entered by themselves.

  patient

Object

Patient Information

    name

String

The patient name of Case.
For ordered cases, patient.name is only available for labs if the "Share patient information" option was checked by the clinic while placing an order. If not checked, the value of patient.name can be null. Refer to ref) Medit Link Workflow for Clinics: Ordering from Labs

    code

String

The patient ID of Case.
The patient ID is the information entered by a clinic. For ordered cases, patient.code is only available for labs if the "Share patient information"option was checked by the clinic while placing an order. If not checked, the value of patient.code can be null.

  files

Array

File list of Case

    uuid

String

The unique identifier of a File

    name

String

name of File

    size

Number

size of File

    fileType

String

Type of File Case File Type

    dateCreated

String

created Date and Time about File

    dateUpdated

String

last modified Date and Time about File

  formInformation

Object

Form Information

    type

String

Case Form Information Type

    items

Array

      category

String

Dental Product Category

      categoryDisplayName

String

      material

String

Dental Product Material

      materialDisplayName

String

      method

String

Dental Product Method

      methodDisplayName

String

      shade

String

      toothNo

Number

FDI tooth number

      jawType

String

Jaw Type

      multiDieNo

Number

  multiOcclusionGroup

Array

This information is about Occlusion groups created using the Multi Occlusion function in Medit Scan for Clinics.

    groupId

Number

Occlusion Group ID

    groupName

String

name of Occlusion Group

    files

Array

uuid list of case files associated with the occlusion group. #Ref : case.files[].uuid

  bridges

Array

Information about connecting two or more prosthetics.

Example Request
GET /v1/orders/3706720?schema=latest HTTP/1.1
x-meditlink-group-uuid: T05FTEFCXzE1NDgzODA1Nzk0MzY=
Authorization: Bearer 3cbfa98f-95d9-4d6a-adda-de9c7ceacb9f
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
Host: stage-openapi-resources.meditlink.com
HTTP Status codes
Status code Description

200

The request completed successfully

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

429

Too many requests.

500

Internal Server Error


3.5.3 Cancel Order

Clinics can cancel the orders they have placed. When an order is canceled, depending on the notification settings of the lab account, an email will be sent to the email address the lab has registered with Medit Link.
Resource Information
PUT /{ver}/orders/{orderNumber}/cancel

Authentication

required

Required OAuth Scopes

ORDER:MANAGE

Data Format

JSON

API Request Throttling

5 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null

Bearer <token>

x-meditlink-client-id

string

Must not be null

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

x-meditlink-group-uuid

string

Must not be null

The unique identifier of a Group uuid

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null

2.2 Version information.

orderNumber

string

Must not be null

Order Number

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

Response Body Structure
{
  "dateUpdated" : "2023-07-05T10:14:24Z",
  "dateCreated" : "2021-04-13T05:14:27Z",
  "dateDesiredDelivery" : "2021-04-20T05:10:00Z",
  "status" : "CANCELED",
  "buyer" : {
    "uuid" : "RC5EQVZJU18xNTQ4Mzc5OTMzODc0",
    "name" : "D.Davis",
    "type" : "CLINIC"
  },
  "seller" : {
    "uuid" : "T05FTEFCXzE1NDgzODA1Nzk0MzY=",
    "name" : "OneLab",
    "type" : "LAB"
  },
  "schemaVersion" : "s1",
  "orderNumber" : 3706720
}
Field Type Description

schemaVersion

String

json structure schema version

orderNumber

Number

Order Number

dateUpdated

String

last modified Date and Time about Order

dateCreated

String

created Date and Time about Order

dateDesiredDelivery

String

Desired Delivery Date from Clinic

status

String

The Status of Order Order Status

buyer

Object

Buyer Group Information

  uuid

String

The unique identifier of a Group

  name

String

name of Group

  type

String

The Type of Group Group Type

seller

Object

Seller Group Information

  uuid

String

The unique identifier of a Group

  name

String

name of Group

  type

String

The Type of Group Group Type

Example Request
PUT /v1/orders/3706720/cancel?schema=latest HTTP/1.1
x-meditlink-group-uuid: T05FTEFCXzE1NDgzODA1Nzk0MzY=
Authorization: Bearer 3cbfa98f-95d9-4d6a-adda-de9c7ceacb9f
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
Host: stage-openapi-resources.meditlink.com

schema=latest
HTTP Status codes
Status code Description

200

The request completed successfully

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

409

The requested resource duplicated or already processed.

429

Too many requests.

500

Internal Server Error


3.5.4 Accept Order

Labs can accept orders from clinics. When an order is canceled, depending on the notification settings of the clinic account, an email will be sent to the email address the clinic has registered with Medit Link.
Resource Information
PUT /{ver}/orders/{orderNumber}/accept

Authentication

required

Required OAuth Scopes

ORDER:MANAGE

Data Format

JSON

API Request Throttling

5 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null

Bearer <token>

x-meditlink-client-id

string

Must not be null

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

x-meditlink-group-uuid

string

Must not be null

The unique identifier of a Group uuid

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null

2.2 Version information.

orderNumber

string

Must not be null

Order Number

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

Response Body Structure
{
  "dateUpdated" : "2023-07-05T10:14:24Z",
  "dateCreated" : "2021-04-13T05:14:27Z",
  "dateDesiredDelivery" : "2021-04-20T05:10:00Z",
  "status" : "ACCEPTED",
  "buyer" : {
    "dateUpdated" : "+52377-10-31T18:06:40Z",
    "dateCreated" : "+51036-03-17T00:56:40Z",
    "uuid" : "RC5EQVZJU18xNTQ4Mzc5OTMzODc0",
    "name" : "D.Davis",
    "description" : "",
    "type" : "CLINIC",
    "contact" : {
      "userName" : "D.Davis",
      "cellPhone" : "",
      "officePhone" : "2193-9600"
    },
    "address" : {
      "state" : "Seoul",
      "city" : "Seongbuk-gu",
      "postal" : "02855",
      "detail1" : "Medit Company, 19 Inchon-ro 22-gil",
      "detail2" : ""
    },
    "homePage" : ""
  },
  "seller" : {
    "dateUpdated" : "+51447-12-26T02:16:40Z",
    "dateCreated" : "+51036-03-24T12:23:20Z",
    "uuid" : "T05FTEFCXzE1NDgzODA1Nzk0MzY=",
    "name" : "OneLab",
    "description" : "",
    "type" : "LAB",
    "contact" : {
      "userName" : "Peter Parker",
      "cellPhone" : "",
      "officePhone" : "2193-9600"
    },
    "address" : {
      "state" : "Seoul",
      "city" : "Seongbuk-gu",
      "postal" : "02855",
      "detail1" : "Medit Company, 19 Inchon-ro 22-gil",
      "detail2" : ""
    },
    "homePage" : ""
  },
  "description" : "",
  "delivery" : [ ],
  "schemaVersion" : "s1",
  "case" : {
    "dateUpdated" : "2023-07-05T10:14:24Z",
    "dateCreated" : "2021-04-13T05:14:27Z",
    "dateScanned" : "",
    "uuid" : "bf335448-ebfc-4922-9b9e-d903b191ad7e",
    "name" : "Seolah.Jeon's Case",
    "status" : "SCAN",
    "tags" : [ "Dental", "Case", "Medit" ],
    "files" : [ {
      "uuid" : "746f4a30-6e6f-4e74-b305-6246b532f005",
      "name" : "maxillary.meditMesh",
      "size" : 4650526,
      "dateUpdated" : "2021-04-13T05:14:28Z",
      "dateCreated" : "2021-04-13T05:14:28Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "7de375a3-4f59-4e59-bce5-0a6889da2fda",
      "name" : "mandibular.meditMesh",
      "size" : 3197161,
      "dateUpdated" : "2021-04-13T05:14:28Z",
      "dateCreated" : "2021-04-13T05:14:28Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "16dfcbfb-e22a-4053-98ae-2a90f5ae779e",
      "name" : "occlusionfirst.meditMesh",
      "size" : 682241,
      "dateUpdated" : "2021-04-13T05:14:28Z",
      "dateCreated" : "2021-04-13T05:14:28Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "f9b62c52-2635-40e7-90fc-31bbbb7fca3d",
      "name" : "occlusionsecond.meditMesh",
      "size" : 1036449,
      "dateUpdated" : "2021-04-13T05:14:28Z",
      "dateCreated" : "2021-04-13T05:14:28Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "6dc4ac01-c090-4657-8738-5f914ce36f48",
      "name" : "occlusion_1_raw.meditGroupInfo",
      "size" : 1005,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "e8445f37-afe6-4ae1-9566-d00fe776f5ff",
      "name" : "occlusion_2_raw.meditGroupInfo",
      "size" : 1005,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "c69b4a82-fd39-4ad4-8456-64a8ee4b1a2b",
      "name" : "mandibular.meditMesh",
      "size" : 3197161,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "b3cac2af-0790-4084-953a-87909a498edb",
      "name" : "maxillary.meditMesh",
      "size" : 4650526,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "486df72c-31b7-41a8-948b-7fe7ebfbf7e0",
      "name" : "occlusionfirst.meditMesh",
      "size" : 1370100,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "1c4293b0-ad77-4302-b26f-84e99c74432b",
      "name" : "occlusionsecond.meditMesh",
      "size" : 916556,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "793bd5af-c9aa-4e87-94e8-7a0a87aeff75",
      "name" : "occlusion_3_raw.meditGroupInfo",
      "size" : 1015,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "c976cbbd-b134-4615-a00b-4d720dbdadc2",
      "name" : "mandibular.meditMesh",
      "size" : 3197161,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "d984fd87-a2dc-4c7a-a498-f27a36d373b5",
      "name" : "maxillary.meditMesh",
      "size" : 4650526,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "34eb5ba1-110f-4c16-ae63-c1057ef0155b",
      "name" : "occlusionfirst.meditMesh",
      "size" : 1616655,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    }, {
      "uuid" : "6a679fcd-e83d-4f1f-a3d4-9df8ad078784",
      "name" : "occlusionsecond.meditMesh",
      "size" : 858497,
      "dateUpdated" : "2021-04-13T05:14:29Z",
      "dateCreated" : "2021-04-13T05:14:29Z",
      "fileType" : "SCAN_DATA"
    } ],
    "formInformation" : {
      "type" : "TEETH",
      "items" : [ {
        "category" : "CROWN",
        "categoryDisplayName" : "Crown",
        "method" : "ANATOMIC",
        "methodDisplayName" : "Anatomic",
        "material" : "ZIRCONIA",
        "materialDisplayName" : "Zirconia",
        "shade" : "NONE_SHADE",
        "toothNo" : 45,
        "jawType" : "",
        "multiDieNo" : 0
      }, {
        "category" : "PONTIC",
        "categoryDisplayName" : "Pontic",
        "method" : "ANATOMIC",
        "methodDisplayName" : "Anatomic",
        "material" : "ZIRCONIA",
        "materialDisplayName" : "Zirconia",
        "shade" : "NONE_SHADE",
        "toothNo" : 46,
        "jawType" : "",
        "multiDieNo" : 0
      }, {
        "category" : "CROWN",
        "categoryDisplayName" : "Crown",
        "method" : "ANATOMIC",
        "methodDisplayName" : "Anatomic",
        "material" : "ZIRCONIA",
        "materialDisplayName" : "Zirconia",
        "shade" : "NONE_SHADE",
        "toothNo" : 47,
        "jawType" : "",
        "multiDieNo" : 0
      } ]
    },
    "multiOcclusionGroup" : [ {
      "groupId" : 1,
      "groupName" : "CO Bite",
      "files" : [ "746f4a30-6e6f-4e74-b305-6246b532f005", "7de375a3-4f59-4e59-bce5-0a6889da2fda", "16dfcbfb-e22a-4053-98ae-2a90f5ae779e", "f9b62c52-2635-40e7-90fc-31bbbb7fca3d", "6dc4ac01-c090-4657-8738-5f914ce36f48" ]
    }, {
      "groupId" : 2,
      "groupName" : "CR Bite",
      "files" : [ "e8445f37-afe6-4ae1-9566-d00fe776f5ff", "c69b4a82-fd39-4ad4-8456-64a8ee4b1a2b", "b3cac2af-0790-4084-953a-87909a498edb", "486df72c-31b7-41a8-948b-7fe7ebfbf7e0", "1c4293b0-ad77-4302-b26f-84e99c74432b" ]
    }, {
      "groupId" : 3,
      "groupName" : "Lateral Bite",
      "files" : [ "793bd5af-c9aa-4e87-94e8-7a0a87aeff75", "c976cbbd-b134-4615-a00b-4d720dbdadc2", "d984fd87-a2dc-4c7a-a498-f27a36d373b5", "34eb5ba1-110f-4c16-ae63-c1057ef0155b", "6a679fcd-e83d-4f1f-a3d4-9df8ad078784" ]
    } ],
    "bridges" : [ [ 15, 14, 13, 12 ], [ 26, 27 ], [ 36, 35, 34 ] ],
    "patient" : {
      "name" : "Seolah.Jeon",
      "code" : ""
    }
  },
  "orderNumber" : 3706720
}
Field Type Description

schemaVersion

String

json structure schema version

orderNumber

Number

Order Number

dateUpdated

String

last modified Date and Time about Order

dateCreated

String

created Date and Time about Order

dateDesiredDelivery

String

Desired Delivery Date from Clinic

status

String

The Status of Order Order Status

description

String

Description of Order

delivery

Array

  dateUpdated

String

last modified Date and Time about Delivery

  dateScheduled

String

scheduled Date and Time about Delivery

  company

String

name of Delivery Company

  trackingNumber

String

tracking number by Delivery Company

  status

String

The Status of Delivery Order Delivery Status

  message

String

delivery message

buyer

Object

Buyer Group Information

  dateUpdated

String

last modified Date and Time about Group Data

  dateCreated

String

created Date and Time about Group Data

  uuid

String

The unique identifier of a Group

  name

String

name of Group

  description

String

Description of Group

  type

String

The Type of Group Group Type

  contact

Object

Contact information of Group

    userName

String

user name

    cellPhone

String

cell-phone number

    officePhone

String

office number

  address

Object

Address information of Group

    state

String

state of address

    city

String

city of address

    postal

String

zip/postal of address

    detail1

String

additional information of address

    detail2

String

additional information of address

  homePage

String

homepage url of Group

seller

Object

Seller Group Information

  dateUpdated

String

last modified Date and Time about Group Data

  dateCreated

String

created Date and Time about Group Data

  uuid

String

The unique identifier of a Group

  name

String

name of Group

  description

String

Description of Group

  type

String

The Type of Group Group Type

  contact

Object

Contact information of Group

    userName

String

user name

    cellPhone

String

cell-phone number

    officePhone

String

office number

  address

Object

Address information of Group

    state

String

state of address

    city

String

city of address

    postal

String

zip/postal of address

    detail1

String

additional information of address

    detail2

String

additional information of address

  homePage

String

homepage url of Group

case

Object

Case Information

  uuid

String

The unique identifier of a Case

  name

String

name of Case

  dateCreated

String

created Date and Time about Case

  dateUpdated

String

last modified Date and Time about Case

  dateScanned

String

last scanned Date and Time about Case

  status

String

The Status of Case Case Status

  tags

Array

Tags entered for the case.
Labs can only see tags entered by a clinic when the clinic checks the “Include tags in the order” option when ordering the case.
Even if no tags are shared by the clinic, labs can still see the tags entered by themselves.

  patient

Object

Patient Information

    name

String

The patient name of Case.
For ordered cases, patient.name is only available for labs if the "Share patient information" option was checked by the clinic while placing an order. If not checked, the value of patient.name can be null. Refer to ref) Medit Link Workflow for Clinics: Ordering from Labs

    code

String

The patient ID of Case.
The patient ID is the information entered by a clinic. For ordered cases, patient.code is only available for labs if the "Share patient information"option was checked by the clinic while placing an order. If not checked, the value of patient.code can be null.

  files

Array

File list of Case

    uuid

String

The unique identifier of a File

    name

String

name of File

    size

Number

size of File

    fileType

String

Type of File Case File Type

    dateCreated

String

created Date and Time about File

    dateUpdated

String

last modified Date and Time about File

  formInformation

Object

Form Information

    type

String

Case Form Information Type

    items

Array

      category

String

Dental Product Category

      categoryDisplayName

String

      material

String

Dental Product Material

      materialDisplayName

String

      method

String

Dental Product Method

      methodDisplayName

String

      shade

String

      toothNo

Number

FDI tooth number

      jawType

String

Jaw Type

      multiDieNo

Number

  multiOcclusionGroup

Array

This information is about Occlusion groups created using the Multi Occlusion function in Medit Scan for Clinics.

    groupId

Number

Occlusion Group ID

    groupName

String

name of Occlusion Group

    files

Array

uuid list of case files associated with the occlusion group. #Ref : case.files[].uuid

  bridges

Array

Information about connecting two or more prosthetics.

Example Request
PUT /v1/orders/3706720/accept?schema=latest HTTP/1.1
x-meditlink-group-uuid: T05FTEFCXzE1NDgzODA1Nzk0MzY=
Authorization: Bearer 3cbfa98f-95d9-4d6a-adda-de9c7ceacb9f
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
Host: stage-openapi-resources.meditlink.com

schema=latest
HTTP Status codes
Status code Description

200

The request completed successfully

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

409

The requested resource duplicated or already processed.

429

Too many requests.

500

Internal Server Error


3.5.5 Reject Order

Labs can reject orders from clinics. When an order is canceled, depending on the notification settings of the clinic account, an email will be sent to the email address the clinic has registered with Medit Link.
Resource Information
PUT /{ver}/orders/{orderNumber}/reject

Authentication

required

Required OAuth Scopes

ORDER:MANAGE

Data Format

JSON

API Request Throttling

5 times per 1 second (by authenticated information)

Request Headers
Name Type Constraints Description

Authorization

string

Must not be null

Bearer <token>

x-meditlink-client-id

string

Must not be null

Authentication OAuth2 Client ID. refer to 1.1.1 Field Guide

x-meditlink-group-uuid

string

Must not be null

The unique identifier of a Group uuid

Request URI Parameters
Parameter Type Constraints Description

ver

int

Must not be null

2.2 Version information.

orderNumber

string

Must not be null

Order Number

Request Query Parameters
Parameter Type Constraints Description

schema

string

response json schema version, default latest

Response Body Structure
{
  "dateUpdated" : "2023-07-05T10:14:24Z",
  "dateCreated" : "2021-04-13T05:14:27Z",
  "dateDesiredDelivery" : "2021-04-20T05:10:00Z",
  "status" : "REJECTED",
  "buyer" : {
    "uuid" : "RC5EQVZJU18xNTQ4Mzc5OTMzODc0",
    "name" : "D.Davis",
    "type" : "CLINIC"
  },
  "seller" : {
    "uuid" : "T05FTEFCXzE1NDgzODA1Nzk0MzY=",
    "name" : "OneLab",
    "type" : "LAB"
  },
  "schemaVersion" : "s1",
  "orderNumber" : 3706720
}
Field Type Description

schemaVersion

String

json structure schema version

orderNumber

Number

Order Number

dateUpdated

String

last modified Date and Time about Order

dateCreated

String

created Date and Time about Order

dateDesiredDelivery

String

Desired Delivery Date from Clinic

status

String

The Status of Order Order Status

buyer

Object

Buyer Group Information

  uuid

String

The unique identifier of a Group

  name

String

name of Group

  type

String

The Type of Group Group Type

seller

Object

Seller Group Information

  uuid

String

The unique identifier of a Group

  name

String

name of Group

  type

String

The Type of Group Group Type

Example Request
PUT /v1/orders/3706720/reject?schema=latest HTTP/1.1
x-meditlink-group-uuid: T05FTEFCXzE1NDgzODA1Nzk0MzY=
Authorization: Bearer 3cbfa98f-95d9-4d6a-adda-de9c7ceacb9f
x-meditlink-client-id: rLHYWvCKTpONpuc7L1L8FUXowgQMh6HO
Content-Type: application/json
Host: stage-openapi-resources.meditlink.com

schema=latest
HTTP Status codes
Status code Description

200

The request completed successfully

400

The request was malformed. The response body will include an error providing further information.

401

The request was Unauthorized

403

it has been refused or access denied. The response payload body provides further details of the error.

404

The requested resource does not exist

409

The requested resource duplicated or already processed.

429

Too many requests.

500

Internal Server Error


FAQ

Authentication

Does Medit provide the OAuth Client Credentials method?

We support other grant types of OAuth framework except for the OAuth Client Credentials method.

The OAuth Client Credentials method does not provide user information of a specific user, so you cannot use it where user authorization is mandatory.


Are the URLs for the Authorization Code Grant flow valid? They seem to have different subdomains.

There are two subdomains, one for Authorization URL and the other for URL to get a token subdomain. Please check if you are using the right one.

  • Authorization URL subdomain: openapi-auth.meditlink.com

  • URL to get a token subdomain: openapi-auth.meditlink.com


How do I get tokens?

Please refer to 1.2 Get Token in the API documentation.


Which scopes do we need?

Please refer to 1.1.2 Scopes in the API documentation.


How to handle token expiration and manage renewal?
  • access_token expiration period: 24H(1D)

  • refresh_token expiration period: 168H(7D)
    The refresh_token expiration period can be extended up to 30 days based on request.

  • When refresh_token is not renewed.

    • Re-authorization is mandatory when refresh_token expires.
      A periodical re-authorization process is mandatory to verify that the user is a Medit Link user to secure the Medit Link data.

    • The refresh_token expiration is not notified via the API response. To design the notification function, please refer to the re-authorization method below.
      Calculate the expiration date from the first access_token response and use the value for re-authorization.

    • You will get the 'Invalid refresh token' for the message and '400' for the status when it fails to refresh the token after requesting.

      {
        "timestamp": "2019-01-02T05:21:38.298Z",
        "status": 400,
        "error": "invalid_grant",
        "message": "Invalid refresh token: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "path": "/oauth/token"
      }

Are the changes for the refresh token applied right away?

The previous tokens are not deleted even after extending the period or renewing tokens. They are only applied when newly issued.


How can I manage the Callback URL? (Range of availability)

You can register a maximum of 4 callback URLs per client ID/KEY.
We support private URLs (ex. localhost)
We support the HTTP protocol.

The response for Callback URL changes based on the code query parameter method.
eg) When set as https://test.com/auth : Respond as https://test.com/auth?code=XXXXX
eg) When set as https://test.com/auth?type=medit : Respond as https://test.com/auth?type=medit&code=XXXXX


Resources

In which case status can I download data files?

Cases synchronized to the cloud can be downloaded in all statuses except FORM. You can check the file types on the list and download the files you need among the synced ones.


Can I use the API to change the order status of a case?

Clinics can cancel orders using the API, while labs can accept or reject orders.


When I use the URL to get a 7-zip file and extract it, we get the MEDITGROUPINFO file. Is it an STL file?

The MEDITGROUPINFO file is created to manage the scan result files in Medit programs, but it won’t be required for users.


Is the "downloadFileName" unique for each file in the entire system?

Since we are using UUIDs as file names, we guarantee the uniqueness of downloaded file names.


Should we always re-request/re-check user information to fetch the Group UUID?

Since the Group UUID can be stored after the initial request, there is no need to check or request it again every time.


Can a user have multiple Group UUID?

We only provide only 1 Group UUID per user.


When using a UUID, how can I specify if it is a clinic or lab?

If you need to distinguish clinic IDs and lab IDs, use the two different UUIDs for clinics and labs as below:

  • Clinic: buyer.uuid

  • Lab: seller.uuid


Can I use other file compressors other than 7-zip?

The file can only be provided as a compressed file in a 7-zip format.


To get the group uuid, refer to the Response Body Structure of 3.1.1 Get user information about me and 3.1.2 Get user by user email in the API documentation.


Which file type do the .meditMesh extension files convert to?

You can convert meditMEsh files into STL, PYL, or OBJ file formats.


What is the file type of ATTACHED_DATA? Is it a picture file?

The ATTACHED_DATA is a file a user attaches to a case in Medit Link to deliver to the lab when ordering.
ATTACHED_DATA files can be 3D data, images, videos, etc., and there is no limitation for the file format.


I have no search results after searching for "name" What should I do?

It only search for equal words for name.
The name refers to the case name, and it must be URL-encoded as it is a query parameter.


Do you provide standard file type? (How do I know which files can be convertible?)

Please refer to the Request Query Parameters in 3.4.1 Get File in the API documentation.

  • File types: SCAN_DATA, ATTACHED_DATA

  • File extensions: meditMesh, meditImportedMesh, meditLibraryInfo, meditCTMesh / marginLine


What file extensions do you provide, and what are they used for?
Most frequently asked extensions per file type and their usage
File Type Extensions Usage

SCAN_DATA

.meditGroupInfo

Multi Occlusion information

ATTACHED_DATA

.meditDesign

Medit Design project file

.meditCrownFit

Medit Crown Fit project file

.meditOrthoSimulation

Medit Ortho Simulation project file

.meditSmileDesign

Medit Smile Design project file

.meditTemporaries

Medit Temporaries project file

.meditSplints

Medit Splints project file

.meditModelBuilder

Medit Model Builder project file

.png, .mkv, .mp4, .meditMesh

Result files from Apps


Support

I got an error. What should I do?

Please share the request (header, host, endpoint, parameter) and response data. The Medit Link team will guide you on how to handle the error.


Appendix A: Code Define

User Language
language Description

ko-KR

Korean

en-US

English

fr-FR

French

zh-CN

Chinese (People’s Republic of China)

zh-TW

Chinese (Taiwan)

ja-JP

Japanese

es-ES

Spanish (Spain)

de-DE

German

ru-RU

Russian

el-GR

Greek

tr-TR

Turkish

cs-CZ

Czech

it-IT

Italian

pt-BR

Portuguese (Brazil)

ro-RO

Romanian

pl-PL

Polish

ar-EG

Arabic (Egypt)

Group Type
Type Description

CLINIC

Clinic type of group in Medit Link

LAB

Lab type of group in Medit Link

Group File Type
Status Description

BUSINESS_CERT

Business license

COVER_IMAGE

Cover image for Organization introduction

LOGO_IMAGE

Logo image for Organization introduction

INTRO_PHOTO

Images for Organization introduction

Case Status
Status Description

FORM

Only form information is saved

SCAN

Case Completed to SCAN

NEED_PROCESSING

Only raw files are saved after scan

CAD

Case completed to CAD

CAM

Case completed to CAM

MILL

Case completed to Mill

COMPLETED

Complete the entire process of the case

Case File Type
Status Description

SCAN_DATA

The scan file of Case

CAD_DATA

The cad file of Case

CAM_DATA

The cam file of Case

MILLING_DATA

The milling file of Case

ATTACHED_DATA

The attached file of Case

RAW_DATA

The scan raw file of Case

Case File Convert Type
Type Description

obj

a geometry definition file format.

stl

a file format native to the stereolithography CAD software created by 3D Systems.

ply

a computer file format known as the Polygon File Format, or the Stanford Triangle Format.

Case Form Information Type
Type Description

TEETH

Form information entered as individual teeth

ARCH

Form information entered as arch type (=jaw type)

FLEXIBLE_MULTIDIE

Form information for using Flexible Multi-Die

MULTIDIE

Form information for using Multi-Die

Dental Product Category
category displayName Description

ANTI-SNORING_DEVICE

Anti-Snoring Appliance

ARTIFICIAL_TOOTH

Artificial Tooth

BITE_SPLINT

Bite Splint

BITE_SPLINT_V2

Bite Splint

BLEACHING_TRAY

Bleaching Tray

CLEAR_ALIGNER

Clear Aligner

COPING

Coping

CROWN

Crown

CUSTOM_ABUTMENT

Custom Abutment

CUSTOM_ABUTMENT___COPING

Custom Abutment + Coping

CUSTOM_ABUTMENT___IMPLANT_CROWN

Custom Abutment + Implant Crown

DENTURE

Denture

DENTURE_COPING

Denture Coping

DIAGNOSIS_MODEL

Diagnostic Model

DIAGNOSTIC_WAX_UP

Diagnostic Wax-Up

FLEXIBLE_MULTIDIE_COPING

Coping

FLEXIBLE_MULTIDIE_INLAY

Inlay

FLEXIBLE_MULTIDIE_WAXUP

Wax-Up

IMPLANT_CROWN

Implant Crown

INDIRECT_BONDING_TRAY

IDB (Indirect Bonding Tray)

INDIVIDUAL_TRAY

Custom Tray

INLAY

Inlay

MULTIDIE_COPING

Coping

MULTIDIE_INLAY

Inlay

MULTIDIE_WAXUP

Wax-Up

NIGHT_GUARD

Night Guard

OFFSET_SUBSTRUCTURE

Offset substructure

ONLAY

Onlay

ORTHODONTIC

Orthodontic Appliance

ORTHODONTIC_V2

Orthodontic Appliance

PARTIAL_DENTURE

Partial Denture

PARTIAL_DENTURE_PER_TEETH

Partial Denture

PONTIC

Pontic

POST_AND_CORE

Post & Core

POST_AND_CORE___COPING

Post & Core + Coping

POST_AND_CORE___CROWN

Post & Core + Crown

PRIMARY_UNIT

Primary Unit

REPLICA_DENTURE

Denture Replica

SPORTS_MOUTH_GUARD

Sports Mouth Guard

STUDY_MODEL

Study Model

SURGICAL_GUIDE

Surgical Guide

TOOTH_POSITIONER

Tooth Positioner

VENEER

Veneer

WAXUP

Wax-Up

Dental Product Method
method displayName Description

ANATOMIC

Anatomic

ATTACHMENT

Attachment

BAR_PILLAR

Bar Pillar

BAR_SEGMENT

Bar Segment

CEMENTATION_TYPE

Cementation Type

CEMENTATION_TYPE_LAYERED

Cementation Type-Layered

CEMENTATION_TYPE_PFG

Cementation Type-PFG

CEMENTATION_TYPE_PFM

Cementation Type-PFM

CEMENTATION_TYPE_PFZ

Cementation Type-PFZ

COLLARLESS

Collarless

DIGITAL_STUDY_MODEL

Digital Study Model

E.MAX_COPING

e.max

FRAMEWORK

Framework

FULL_DENTURE

Full Denture

IMPLANT_SUPPORTED_DENTURE

Implant Supported Denture

LAMINATE

Laminate

LAYERED

Layered

LIGHT_CURING

Light Curing

LISI_COPING

LiSi

OFFSET

Offset

PARTIAL_DENTURE_COPING

Partial Denture Coping

PFG

PFG

PFM

PFM

PFZ

PFZ

PONTIC

Pontic

PREFORM

Preform

PRESSED

Pressed

REDUCED

Cut Back

REPLICA_DENTURE

Replica Denture

SCREW_TYPE

Screw Type

SCREW_TYPE_LAYERED

Screw Type-Layered

SCREW_TYPE_PFG

Screw Type-PFG

SCREW_TYPE_PFM

Screw Type-PFM

SCREW_TYPE_PFZ

Screw Type-PFZ

SCRP_LAYERED

SCRP-Layered

SCRP_PFG

SCRP-PFG

SCRP_PFM

SCRP-PFM

SCRP_PFZ

SCRP-PFZ

SC_RP

SCRP

SELF_CURING

Self Curing

SET-UP_MODEL

Set-Up Model

TELESCOPIC_CROWN

Telescopic Crown

TELESCOPIC_INNER_CROWN_PFG

Primary Telescopic Crown - PFG

TELESCOPIC_INNER_CROWN_PFM

Primary Telescopic Crown - PFM

TELESCOPIC_OUTER_CROWN_PFG

Secondary Telescopic Crown - PFG

TELESCOPIC_OUTER_CROWN_PFM

Secondary Telescopic Crown - PFM

TEMPORARY_CROWN

Temporary

TEMPORARY_DENTURE

Temporary

TEMPORARY_PARTIAL_DENTURE

Temporary

TEMPORARY_PONTIC

Temporary

WAX-RIM

Wax-Rim

Dental Product Material
material displayName Description

3D_PRINT

3D Print

COMPOSITE_REGIN

Composite Resin

CR-CO

Cr-Co

E.MAX

e.max

GLASS_CERAMIC

Glass Ceramic

GOLD

Gold

HYBRID_CERAMIC

Hybrid Ceramic

LISI

LiSi

METAL

Metal

METAL___3D_PRINT

Metal + 3D Print

METAL___COMPOSITE_REGIN

Metal + Composite resin

METAL___E.MAX

Metal + e.max

METAL___GLASS_CERAMIC

Metal + Glass ceramic

METAL___GOLD

Metal + Gold

METAL___HYBRID_CERAMIC

Metal + Hybrid ceramic

METAL___LISI

Metal + LiSi

METAL___METAL

Metal + Metal

METAL___NOT_SELECTED

Metal + Not Selected

METAL___PMMA

Metal + PMMA

METAL___PRESS_CERAMIC

Metal + Press ceramic

METAL___STAINLESS_STEEL

Metal + Stainless steel

METAL___TITANIUM

Metal + Titanium

METAL___WAX

Metal + Wax

METAL___ZIRCONIA

Metal + Zirconia

METAL___ZIRCONIA_MULTI_LAYER

Metal + Multi-Layered Zirconia

NI-CR

Ni-Cr

NOT_SELECTED

Not Selected

PEEK

PEEK

PMMA

PMMA

POLY_GLASS

Poly Glass

PORCELAIN

Porcelain

PRESS_CERAMIC

Press Ceramic

RESIN

Resin

RESIN___3D_PRINT

Resin + 3D Print

RESIN___COMPOSITE_REGIN

Resin + Composite resin

RESIN___E.MAX

Resin + e.max

RESIN___GLASS_CERAMIC

Resin + Glass ceramic

RESIN___GOLD

Resin + Gold

RESIN___HYBRID_CERAMIC

Resin + Hybrid ceramic

RESIN___LISI

Resin + LiSi

RESIN___METAL

Resin + Metal

RESIN___NOT_SELECTED

Resin + Not Selected

RESIN___PMMA

Resin + PMMA

RESIN___PRESS_CERAMIC

Resin + Press ceramic

RESIN___STAINLESS_STEEL

Resin + Stainless steel

RESIN___TITANIUM

Resin + Titanium

RESIN___WAX

Resin + Wax

RESIN___ZIRCONIA

Resin + Zirconia

RESIN___ZIRCONIA_MULTI_LAYER

Resin + Multi-Layered Zirconia

STAINLESS_STEEL

Stainless Steel

TITANIUM

Titanium

TITANIUM___3D_PRINT

Titanium + 3D Print

TITANIUM___E.MAX

Titanium + e.max

TITANIUM___GOLD

Titanium + Gold

TITANIUM___LISI

Titanium + LiSi

TITANIUM___METAL

Titanium + Metal

TITANIUM___NOT_SELECTED

Titanium + Not Selected

TITANIUM___PMMA

Titanium + PMMA

TITANIUM___WAX

Titanium + Wax

TITANIUM___ZIRCONIA

Titanium + Zirconia

TITANIUM___ZIRCONIA_MULTI_LAYER

Titanium + Multi-Layered Zirconia

UNDEFINED

Undefined

WAX

WAX

ZIRCONIA

Zirconia

ZIRCONIA_MULTI_LAYER

Multi-Layered Zirconia

ZIRCONIA_MULTI_LAYER___3D_PRINT

Multi-Layered Zirconia + 3D Print

ZIRCONIA_MULTI_LAYER___COMPOSITE_REGIN

Multi-Layered Zirconia + Composite resin

ZIRCONIA_MULTI_LAYER___E.MAX

Multi-Layered Zirconia + e.max

ZIRCONIA_MULTI_LAYER___GLASS_CERAMIC

Multi-Layered Zirconia + Glass ceramic

ZIRCONIA_MULTI_LAYER___GOLD

Multi-Layered Zirconia + Gold

ZIRCONIA_MULTI_LAYER___HYBRID_CERAMIC

Multi-Layered Zirconia + Hybrid ceramic

ZIRCONIA_MULTI_LAYER___LISI

Multi-Layered Zirconia + LiSi

ZIRCONIA_MULTI_LAYER___METAL

Multi-Layered Zirconia + Metal

ZIRCONIA_MULTI_LAYER___NOT_SELECTED

Multi-Layered Zirconia + Not Selected

ZIRCONIA_MULTI_LAYER___PMMA

Multi-Layered Zirconia + PMMA

ZIRCONIA_MULTI_LAYER___PRESS_CERAMIC

Multi-Layered Zirconia + Press ceramic

ZIRCONIA_MULTI_LAYER___STAINLESS_STEEL

Multi-Layered Zirconia + Stainless steel

ZIRCONIA_MULTI_LAYER___TITANIUM

Multi-Layered Zirconia + Titanium

ZIRCONIA_MULTI_LAYER___WAX

Multi-Layered Zirconia + Wax

ZIRCONIA_MULTI_LAYER___ZIRCONIA

Multi-Layered Zirconia + Zirconia

ZIRCONIA_MULTI_LAYER___ZIRCONIA_MULTI_LAYER

Multi-Layered Zirconia + Multi-Layered Zirconia

ZIRCONIA___3D_PRINT

Zirconia + 3D Print

ZIRCONIA___COMPOSITE_REGIN

Zirconia + Composite resin

ZIRCONIA___E.MAX

Zirconia + e.max

ZIRCONIA___GLASS_CERAMIC

Zirconia + Glass ceramic

ZIRCONIA___GOLD

Zirconia + Gold

ZIRCONIA___HYBRID_CERAMIC

Zirconia + Hybrid ceramic

ZIRCONIA___LISI

Zirconia + LiSi

ZIRCONIA___METAL

Zirconia + Gold

ZIRCONIA___NOT_SELECTED

Zirconia + Not Selected

ZIRCONIA___PMMA

Zirconia + PMMA

ZIRCONIA___PRESS_CERAMIC

Zirconia + Press ceramic

ZIRCONIA___STAINLESS_STEEL

Zirconia + Stainless steel

ZIRCONIA___TITANIUM

Zirconia + Titanium

ZIRCONIA___WAX

Zirconia + Wax

ZIRCONIA___ZIRCONIA

Zirconia + Zirconia

ZIRCONIA___ZIRCONIA_MULTI_LAYER

Zirconia + Multi-Layered Zirconia

Jaw Type
Status Description

UPPER_JAW

Maxilla

LOWER_JAW

Mandible

Order Status
Status Description

PENDING

The lab has not yet accepted the case ordered by the clinic.

CANCELED

Canceled by the clinic before the lab accepted the order.

REJECTED

The lab has rejected a case ordered from the clinic.

ACCEPTED

The case ordered by the clinic was accepted by the lab.

SHIPPED

The finished prosthesis from the lab is being delivered to the clinic.

REFUNDED

Cases paid through Medit Link have been refunded.

COMPLETED

The prosthesis worked in the lab has been delivered and the ordering process has been completed.

Order Delivery Status
Status Description

PLANNING

Lab has shared the expected delivery date to the clinic

READY

Lab has completed the work and is preparing for delivery

STARTED

Shipment has been started

ARRIVED

Shipment has arrived

RECEIVED

The shipment from the lab was received at the clinic

Appendix B: How to attach a file

The process of attaching a file

This session describes the process of attaching files to a case.
Please understand the process below and use the relevant APIs.

Step #1. Get File Hash
ref. Generate a file hash value
Get the file hash value for the upload target file for integrity check.

Step #2. Register File Info
ref. 3.4.2 Register File information
File information must be registered before uploading a file.
After registration is complete, upload the file to the cloud using the URL in the uploadUrl of the response data.

Step #3. Upload to Cloud
ref. 3.4.3 Upload File
Upload the file to the cloud.
After uploading the file to the cloud, the service conducts post-processing to convert the file into the file formats that work for Medit Link.
After the post-processing process completes, the result of the file upload is sent to the callbackUrl that you requested while registering the file information.

  • You must upload the file to the cloud when the file information is modified.

  • You can check the file information in the case only after the post-processing process completes.


Generate a file hash value

When uploading files using the pre-signed upload URL method provided by Amazon S3 (Simple Storage Service), you need to verify the integrity of target files.
For the integrity check, the file’s hash value must be set in Content-MD5 of the header when uploading the file. It is also required to set the hashValue in the request data of the APIs to register or modify file information.

You can obtain the file’s hash value by applying the base64-encoding to the MD5 hash value. Refer to the link below for more information.
ref. https://aws.amazon.com/premiumsupport/knowledge-center/data-integrity-s3/