• Register

eTMF API

The eTMF API allows you to import documents to a study and query details of your studies. These APIs require the Egnyte.etmf scope.

List Studies

This endpoint is used to get a list of the studies the current user has access to.

GET /pubapi/v1/etmf/studies

Request Parameters in the Request Body

This endpoint does not have any request parameters

Request Examples

  GET /pubapi/v1/etmf/studies HTTP/1.1
  Host: apidemo.egnyte.com
  Authorization: Bearer 68zc95e3xv954u6k3hbnma3q

Response

A successful request will return an HTTP 200 status code with an JSON response body.

{
    "studies": [
        {
            "systemId": "eee92526-53ce-45be-bdce-7263567c9e78",
            "id": "DEM-81",
            "name": "Demo 81 Study",
            "description": "Acme Tx is conducting a study to evaluate the impact of DEM-81 on...",
            "status": "ACTIVE"
        }
    ]
}

List Filing Levels

This endpoint is used to get a list of filing levels the current user has access to for a given study.

GET /v1/etmf/studies/{studyId}/filing-levels

Request Parameters in the URL

Parameter Description Required Possible Values
studyId The system ID of the study you would like to fetch the filing levels for Yes String
example: eee92526-53ce-45be-bdce-7263567c9e78

Request Examples

GET /v1/etmf/studies/eee92526-53ce-45be-bdce-7263567c9e78/filing-levels HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q

Response

A successful request will return an HTTP 200 status code with a JSON response body.

{
    "trial": {
        "systemId": "2f47005e-76d1-42e7-857c-926ca5723e18",
        "status": "ACTIVE",
        "countries": [
        {
            "systemId": "5ccfd52a-75f9-49c5-b2e0-177862699ed0",
            "code": "POL",
            "status": "ACTIVE",
            "sites": [
                {
                    "systemId": "ab650679-ac09-4e1e-afd9-13de225ec4af",
                    "id": "WAW_01",
                    "status": "ACTIVE"
                }
            ]
        }
        ]
    }
}

List Artifacts and Milestones

This endpoint is used to get a list of the artifacts and milestones available for a specific filing level

GET /v1/etmf/studies/{studyId}/artifacts

Request Parameters

Parameter Description Required Possible Values
studyId The system ID of the study you would like to fetch artifacts and milestones for. Included as a segment of the request path. Yes String
example: eee92526-53ce-45be-bdce-7263567c9e78
filingLevel The type of filing level. Included as a URL parameter. Yes One of the values:
trial, country, site
filingLevelId The system ID of the filing level. Included as a URL parameter. Yes String
example: 2f47005e-76d1-42e7-857c-926ca5723e18

Request Examples

GET /v1/etmf/studies/eee92526-53ce-45be-bdce-7263567c9e78/artifacts?filingLevel=trial&filingLevelId=2f47005e-76d1-42e7-857c-926ca5723e18 HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q

Response

A successful request will return an HTTP 200 status code with a JSON response body.

{
    "artifacts": [
        {
            "referenceModelArtifactId": "001",
            "number": "01.01.01",
            "name": "Trial Master File Plan",
            "isUnblinded": false,
            "milestoneNumber": 2
        }
    ],
    "milestones": [
        {
            "id": "aa9b50b7-f8ad-4cdd-a401-a6d23ee06568",
            "name": "Clinical Infrastructure Ready",
            "number": 2,
            "status": "ACTIVE"
        }
    ]
}

List Documents

This endpoint is used to get a list of the documents for a specific filing level

POST /v1/etmf/studies/{studyId}/documents/listing

Request Parameters

Parameter Description Required Possible Values
studyId The system ID of the study you would like to fetch documents for. Included as segment of the request path. Yes String
example: eee92526-53ce-45be-bdce-7263567c9e78
filingLevel.type The type of filing level. Included as a URL parameter. Yes One of the values:
TRIAL, COUNTRY, SITE
filingLevel.countryId The system ID of the country No String
example: 2f47005e-76d1-42e7-857c-926ca5723e18
filingLevel.siteId The system ID of the site No String
example: dd0b0154-f36e-4c5f-9480-caf24a72ddbc
zone Filter by the zone associated with the artifact of the document, including both the zone number and name. No String
example: 02 Central Trial Documents
artifact Filter by the artifact associated with the document, including both the artifact number and name. No String
example: 02.01.01 Investigator's Brochure
status Filter by the status of the document. No One of the values:
DRAFT, IN_QC, APPROVED, REJECTED
limit Maximum number of documents returned. No
Default: 20
Positive Integer between 1 and 200
offset Zero-based index of the first document returned. Used for pagination. Included as a URL parameter. No
Default: 0
Integer

Request Examples

POST /v1/etmf/studies/eee92526-53ce-45be-bdce-7263567c9e78/documents/listing?filingLevel=trial&filingLevelId=2f47005e-76d1-42e7-857c-926ca5723e18 HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q
Content-Type: application/json

{
  "filingLevel": {
    "type": "SITE",
    "siteId": "b53884cf-2bc0-4830-abba-a54c67c25a65"
  },
  "zone": "02 Central Trial Documents",
  "artifact": "02.01.01 Investigator's Brochure",
  "status": "DRAFT",
  "limit": 100,
  "offset": 0
}

Response

A successful request will return an HTTP 200 status code with a JSON response body.

{
  "documents": [
      {
          "studyId": "ab650679-ac09-4e1e-afd9-13de225ec4af",
          "id": "ab650679-ac09-4e1e-afd9-13de225ec4af",
          "artifact": {
              "artifactNumber": "02.01.01",
              "artifactName": "Investigator's Brochure",
              "sectionNumber": "02.01",
              "sectionName": "Product and Trial Documentation",
              "zoneNumber": "02",
              "zone": "Central Trial Documents",
              "referenceModelArtifactId": "31",
              "isUnblinded": false
          },
          "milestone": {
              "name": "Clinical Infrastructure Ready",
              "number": 2,
              "id": "45f8cb40-0d8e-4f82-89c3-3708e4b0210d"
          },
          "filingLevel": {
              "type": "TRIAL"
          },
          "file": {
              "name": "Investigator Brochure v1 - 2024-02-14.docx",
              "entryId": "17c79408-6faf-4ba4-8be1-0b77a7511e60",
              "groupId": "aa5f47a4-4a02-425b-88ec-dcbe7fa7c2c2"
          },
          "qualityControl": {
              "dueOn": "2025-04-12T14:08:14.812Z",
              "status": "DRAFT"
          }
      }
  ],
  "offset": 0,
  "hasMore": true
}

Add Documents

This endpoint is used to add a document to a study. The document must be present in the Egnyte file system before this API can be used.

POST /v1/etmf/studies/{studyId}/documents

Request Parameters

Parameter Description Required Possible Values
studyId The system ID of the study you would like to fetch documents for. Included as segment of the request path. Yes String
example: eee92526-53ce-45be-bdce-7263567c9e78
filingLevel.type The type of filing level. Included as a URL parameter. Yes One of the values:
TRIAL, COUNTRY, SITE
filingLevel.systemId The system ID of the filing level the document should be added to Yes String
example: 2f47005e-76d1-42e7-857c-926ca5723e18
classification.referenceModelArtifactId The ID of the artifact the file should be classified as No String
example: 001
classification.milestoneId The milestone id of the milestone the file should be associated with No String
example: c8cfa0dd-dda3-4089-962d-3d33bb6ae448
classification.unblinded Filter by the unblinded status of the document. No, only required when the document is unclassified Boolean
sourceFile.groupId The groupId of the file in the file system No String
example: 35ed2e11-35e8-4712-b78f-98aceb780ef8

Request Examples

POST /v1/etmf/studies/eee92526-53ce-45be-bdce-7263567c9e78/documents HTTP/1.1
Host: apidemo.egnyte.com
Authorization: Bearer 68zc95e3xv954u6k3hbnma3q
Content-Type: application/json

{
  "filingLevel": {
    "systemId": "aa9b50b7-f8ad-4cdd-a401-a6d23ee06568",
    "type": "TRIAL"
  },
  "classification": {
    "referenceModelArtifactId": "001",
    "milestoneId": "c8cfa0dd-dda3-4089-962d-3d33bb6ae448"
  },
  "sourceFile": {
    "groupId": "35ed2e11-35e8-4712-b78f-98aceb780ef8"
  }
}

Response

A successful request will return an HTTP 200 status code with a JSON response body.

{
  "id": "aa9b50b7-f8ad-4cdd-a401-a6d23ee06568",
  "file": {
    "groupId": "35ed2e11-35e8-4712-b78f-98aceb780ef8",
    "entryId": "5c8598b6-1ab4-45e5-b534-4b60caeddabd",
    "path": "/Shared/__eTMF__/STD-001_STAGING/Trial Binder/Artifacts/01 First Country RA Approval/02 Central Trial Documents/02.01 Product and Trial Documentation/02.01.01 Investigator's Brochure/example.pdf"
  }
}