Skip to main content

FacilityAccess-v1 1.0.0

ServiceRequests

1. Authenticate

Text (formatted, long)

Prerequisites


  1. You should have registered in our developer portal. Check this link about how to register an Account.
  2. You should request access to the playground, sandbox and production environment using our Support page. Here is the link to support page to request access to our environments.
  3. You should have an App created in your account to get the client id and client secret. Check this link about how to create an App.

Note : The time data attribute on APIs follows a 24-hour clock starting at 00:00 and ending at 23:59.

 

Authentication


The bearer token obtained after successful authentication should be passed as credential when calling this API for authentication. Check the Access Token API link for instructions on how to generate your bearer token.

 

 

Read the Get Started documentation if you are unaware of your client credentials.

 

2. Permissions

3. Get Information

Text (formatted, long)

Get Account Information


Master account Id and account Id need to be passed in the header for this API call. This is needed to indicate your legal entity.
Refer to the Accounts API for instructions on how to retrieve your account information. You may skip this step if you already know your master account Id and account Id.

 

Text (formatted, long)

Get Site Information


Retrieve the available facility information which are assigned to you. You need the site code to indicate to which facility you want to make a request.
Refer to the Sites API for instructions on how to retrieve your site information. You may skip this step if you already know your sites.

 

Text (formatted, long)

Get Location Information


Retrieve the available location information which are assigned to you. You need the location name to indicate to which location in the facility you want to make a request.
Refer to the Locations API for instructions on how to retrieve your location information. You may skip this step if you already know your locations.

4. Request Visitor Access

The method can be used to request facility access for visitors.

 Method POST
End point /v1/facility-access/visitors/access-requests
Headers Authorization, Master-Account-Id, Account-Id, Content-Type
Query Parameters n/a
Body "visitors": [{"visitorFirstName","visitorLastName"","visitorEmail","visitorPhone"}],
"sites": [{"site","locations":[{"location",'accessStartDate','accessEndDate'} ]}],
"visitorType","escortFirstName","escortLastName","visitorHostFirstName","visitorHostLastName",
"visitorHostCompany","visitorBadgeStartDate","visitorBadgeEndDate","company","emailNotifications",
"notes","isExtendedVisitorBadge","isBulkRequest"

 

 

Sample Curl Request

curl --location --request POST 'https://api.digitalrealty.com/v1/facility-access/visitors/access-requests' \
--header 'Master-Account-Id: <Master-Account-Id>' \
--header 'Account-Id: <Account-Id>' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data-raw '[
  {
    "visitors": [
      {

        "visitorFirstName": "Jake",
        "visitorLastName": "Doe",
        "visitorEmail": "jake_doe@email.com",
        "visitorPhone": "1234567890"
      }
    ],
    "sites": [
      {
        "site": "IAD024",
        "locations": [
          {
            "location": "ABC Cage F150-B",
            "accessStartDate": "2024-07-30",
            "accessEndDate": "2024-07-30"
          }
        ]
      }
    ],
    "visitorType": true,
    "escortFirstName": "Jane",
    "escortLastName": "Doe",
    "visitorHostFirstName": "John",
    "visitorHostLastName": "Doe",
    "visitorHostCompany": "ABC Company",
    "visitorBadgeStartDate": "2023-06-07",
    "visitorBadgeEndDate": "2023-06-07",
    "company": "DEF Company",
    "emailNotifications": "jane_doe@email.com,test@email.com",
    "notes": "Datacenter Tour",
    "isExtendedVisitorBadge": false,
    "isBulkRequest": false
  }
]'

 

Headers

Field Name Mandatory Type Description
Master-Account-Id true string Customer master account identifier.
Account-Id true string Customer account identifier.
Authorization true string Token-based authentication.
Content-Type true string Indicates the request body format [application/json].

 

Query Parameters

n/a

Body

Field Name Mandatory Type Description
visitors true array Array of visitor objects. [up to 10 visitor/site combinations]
> visitorFirstName true string(20) First name of the visitor.
> visitorLastName true string(20) Last name of the visitor.
> visitorEmail true string(50) Visitor’s email address.
> visitorPhone false string(40) Visitor’s phone number.
sites true array Array of site objects. [up to 10 visitors/site combinations]
> site true string(6) Site work will be performed. 
> locations true array Array of location objects. 
> > location true string Space within the facility where access needed (suite, cage, etc.)
> > accessStartDate true string($date)

Date specific access privileges start
format: [yyyy-MM-dd]

accessStartDate >= visitorBadgeStartDate but < visitorBadgeEndDate

> > accessEndDate true string($date)

Date specific access privileges end
format: [yyyy-MM-dd]

accessEndDate <=  visitorBadgeStartDate but >= visitorBadgeEndDate

visitorType true boolean Indicates if visitors access is escorted.
Values: [true = Escorted visitor, false = Unescorted visitor]
Default Value for visitorType = true.
escortFirstName false* string(20) First name of person escorting visitor.
* Mandatory if the visitor is to be escorted.
escortLastName false* string(20) Last name of person escorting visitor.
* Mandatory if the visitor is to be escorted.
visitorHostFirstName true string(20) First name of host.
visitorHostLastName true string(20) Last name of host.
visitorHostCompany true string(120) Company hosting the visitor.
visitorBadgeStartDate true string($date) Date the visitor access will begin.
format: [yyyy-MM-dd]   
visitorBadgeStartDate >= current date but not > 90 days in the future
visitorBadgeEndDate true string($date) Date the visitor access will end.
format: [yyyy-MM-dd]
visitorBadgeEndDate >= visitorBadgeStartDate but not greater than 365 days from visitorBadgeStartDate
company true string(120) Company name.
emailNotifications false string(32k) Personnel's email addresses designated to be notified of the request. You can add one or more email addresses in the field by inserting a comma as a separator : "email_1, email_2, email_3".
notes false string(32k) Add additional information needed.
isExtendedVisitorBadge false* boolean

Not required to check in daily. (valid up to 30 days)
Values: [true = extended visitor badge, false = standard  visitor badge]
* Mandatory if the visitor is Unescorted.


Standard Visitor Badge: Requires a daily check-in at the DLR Security office to receive a visitor badge, which must be returned to the DLR Security office at the end of each workday.

Extended Visitor Badge: Remains continuously active for up to 30 days and is in the possession of the approved individual. After 30 days, a new request must be submitted for approval.

isBulkRequest true boolean Deprecated. Please see details below

 

 

Bulk request:

This feature is deprecated for now. Team is working on a better business process to enable bulk facility access requests. 

 

Text (formatted, long)

Sample JSON Response

{
    "workOrder": [
        {
            "workOrderId": "WO8744051"
        }
    ]
}

 

Payload Description

Field Name Type Description
workOrder array Array of workOrderId objects
workOrderId string(20) Identifier of the facility access work order.

5. Retrieve Visitor Access Ticket Information

The method can be used to retrieve details of a facility access request.

 Method GET
End point /v1/facility-access/access-tickets/{ticketId}
Headers Authorization, Master-Account-Id, Account-Id
Query Parameters n/a
Body n/a

 

Sample Curl Request

curl --location --request GET 'https://api.digitalrealty.com/v1/facility-access/access-tickets/<ticketId>' \
--header 'Master-Account-Id: <Master-Account-Id>' \
--header 'Account-Id: <Account-Id>' \
--header 'Authorization: Bearer <access_token>'

 

Headers

Field Name Mandatory Type Description
Master-Account-Id true string Customer master account identifier.
Account-Id true string Customer account identifier.
Authorization true string Token-based authentication.

 

Query Parameters

n/a

Body

n/a

Sample JSON Response

{
    "ticketId": "WO9282943",
    "ticketType": "Security",
    "ticketStatus": "Approved",
    "requester": "Random User",
    "ticketCreatedDate": "2023-06-07 11:01:06",
    "ticketUpdatedDate": "2023-06-07 11:02:03",
    "requestType": "Visitor Access",
    "ticketCategory": "New Visitor Access",
    "contactFirstName": "Jake",
    "contactLastName": "Doe",
    "contactEmail": "jake_doe@email.com",
    "contactPhone": "+918898805959",
    "representingCompany": "DEF Company",
    "badgeStartDate": "2023-06-07",
    "badgeEndDate": "2023-06-07",
    "site": [
        {
            "site": "IAD024",
            "locations": [
                {
                    "location": "ABC Cage F150-B"
                }
            ],
            "address": "43830 Devin Shafron Drive (Bldg F)"
        }
    ],
    "modifiedBy": "system",
    "emailNotifications": "",
    "visitorType": "Escorted visitor",
    "visitorBadgeType": "Visitor Access (Escorted)",
    "visitorHostFirstName": "John",
    "visitorHostLastName": "Doe",
    "hostCompany": "ABC Company",
    "notes": "Datacenter Tour",
    "contactType": "Jake Doe going to visit IAD024 - ABC Cage F150-B on 06/07/2023",
    "escortFirstName": "Jane",
    "escortLastName": "Doe",
    "visitorBadgeStartDate": "2023-06-07",
    "visitorBadgeEndDate": "2023-06-07",
    "customerExternalReference": "",
    "workDescription": "Datacenter Tour",
    "description": "Jake Doe going to visit IAD024 - ABC Cage F150-B on 06/07/2023",
    "bulkRequest": false
}

 

Payload Description

Field Name Type Description
ticketId string(20) Identifier of the ticket.
ticketType string(enum)

The type of the ticket.

Value: [Facility Access]

ticketStatus string(enum)

Designates the stage of the ticket.
Pending Approval = ticket was submitted successfully but is pending approval before it is created in the downstream system(s). At this point in the process the ticket exists only on the Global Portal..
Approved = ticket was created but work on it has not started. Two use cases:

  • Approved and created in the downstream systems. This includes tickets with a mix of approved/denied access to sites/locations.
  • No approval is needed; tickets are automatically created in the downstream systems.

In Progress = ticket has been assigned to a DLR resource and in the process of being addressed.
Completed = all work on the ticket has been completed.
Approval Denied = the entire ticket was not approved by a user with the proper permissions.
Cancelled = ticket was cancelled as it was not necessary (created by mistake, duplicate, etc)

requester string(40) Designates the user that initially generated the work order.
ticketCreatedDate string(date-time) Date on which the work order was generated.
format: [yyyy-MM-dd HH:mm:ss] timezone: [UTC]
ticketUpdatedDate string(date-time) Last date on which the work order details were modified.
format: [yyyy-MM-dd HH:mm:ss] timezone: [UTC]
requestType string(enum)

Type of the facility access request.

Value: [Visitor Access]

ticketCategory string(enum)

Category of the facility access request.

Value: [New Visitor Access]

contactFirstName string(20) First name of the contact.
contactLastName string(20) Last name of the contact.
contactEmail string(50) Contact’s email address.
contactPhone string(40) Contact’s phone number.
representingCompany string(120) Company representing.
badgeStartDate string($date) Date of the badge activation.
format: [yyyy-MM-dd]
badgeEndDate string($date) Date of the badge expiration.
format: [yyyy-MM-dd]
site array Array of site objects.
>site string(6) Assigned Site.
> locations array Array of location objects.
>> location string Space within the facility where access needed (suite, cage, etc.)
> address string Site Address.
modifiedBy string(40) Designates the user that modified the work order.
emailNotifications string(32k) Personnel's email addresses designated to be notified of the request. You can add one or more email addresses in the field by inserting a comma as a separator : "email_1, email_2, email_3".
visitorType string(enum) Indicates if visitors access is escorted.
Values: [true = Escorted visitor, false = Unescorted visitor]
Default Value for visitorType = true.
visitorBadgeType string(enum) The Type of visitor badge.
Values: [Visitor Access (Escorted),Visitor Access (Extended),Visitor Access (Unescorted)]
visitorHostFirstName string(20) First name of host.
visitorHostLastName string(20) Last name of host.
hostCompany string(120) Company hosting the visitor.
notes string(32k) Add additional information needed.
contactType string Short description of the visit.
escortFirstName string(20) First name of person escorting visitor.
escortLastName string(20) Last name of person escorting visitor.
visitorBadgeStartDate string($date) Date the visitor access will begin.
format: [yyyy-MM-dd]   
visitorBadgeStartDate >= current date but not > 90 days in the future
visitorBadgeEndDate string($date) Date the visitor access will end.
format: [yyyy-MM-dd]
visitorBadgeEndDate >= visitorBadgeStartDate but not greater than 365 days from visitorBadgeStartDate
customerExternalReference string(40) Customer external reference number.
workDescription string(32k) The Description of the work.
description string Short description of work order.
bulkRequest boolean Indicates if this is a request for more than four visitors.

Retrieve Visitor Access List


The method can be used to retrieve all visitor access requests of the customers account.

 Method GET
End point /v1/facility-access/visitors
Headers Authorization, Master-Account-Id, Account-Id
Query Parameters site, status, createdBy, size, page
Body n/a

 

Sample Curl Request

curl --location --request GET 'https://api.digitalrealty.com/v1/facility-access/visitors' \
--header 'Master-Account-Id: <Master-Account-Id>' \
--header 'Account-Id: <Account-Id>' \
--header 'Authorization: Bearer <access_token>'

 

Headers


Field Name Mandatory Type Description
Master-Account-Id true string Customer master account identifier.
Account-Id true string Customer account identifier.
Authorization true string Token-based authentication.

 

Query Parameters


Field Name Mandatory Type Description
site false string(6) Filter by the DLR facility that handles the tickets.
status false string(enum)

Filter by state of the tickets.

Values: [Pending Approval,Approved,In Progress,Completed,Approval Denied,Cancelled]

createdBy false string(40) Filter by user who generated the work order.
size false integer The maximum number of search results to return.
Default value: 25
page false integer The page number of the returning search results.
Default value: 0

 

Body


n/a

Sample JSON Response


{
  "content": [
        {
            "id": "WO9283130",
            "title": "Jake Doe going to visit IAD024 - ABC Cage F150-B on 06/07/2023",
            "status": "Approved",
            "site": "IAD024",
            "requestType": "Visitor Access",
            "category": "New Visitor Access",
            "isBulkRequest": false,
            "createdOn": "2023-06-07 11:39:17",
            "updatedOn": "2023-06-07 11:40:15",
            "closedOn": "",
            "createdBy": "Random User",
            "ticketType": "Facility Access",
            "description": "New Visitor Access",
            "location": "ABC Cage F150-B"
        }
  ],
  "pageable": {
    "last": true,
    "totalPages": 1,
    "totalElements": 1,
    "size": 25,
    "number": 0,
    "first": true,
    "numberOfElements": 1,
    "empty": false
  }
}

Payload Description


Field Name Type Description
id string(20) Identifier of the ticket.
title string(160) Label on the work order.
status string(enum)

Designates the stage of the ticket.

Values: [Pending Approval,Approved,In Progress,Completed,Approval Denied,Cancelled]

site string(6) Identifier of the DLR facility.
requestType string(enum) Type of the facility access request.
value: [Visitor Access]
category string(enum) Category of the facility access request.
Value: [New Visitor Access]
isBulkRequest boolean Indication if for multiple visitors is use.
createdOn string(date-time) Date on which the work order was generated.
format: [yyyy-MM-dd HH:mm:ss] timezone: [GMT]
updatedOn string(date-time) Last date on which the work order details were modified.
format: [yyyy-MM-dd HH:mm:ss] timezone: [GMT]
closedOn string(date-time) Date on which the work order’s status was marked Completed.
format: [yyyy-MM-dd HH:mm:ss] timezone: [GMT]
createdBy string(40) Designates the user that initially generated the work order.
ticketType string(enum) Type of the ticket.
value: [Facility Access]
description string Short description of work order.
location string Identifier of customer premise within DLR facility.

6. Edit Visitor Access Ticket Information

The method can be used to edit a facility access ticket. 

 Method PUT
End point /v1/facility-access/access-tickets/{workOrderId}
Headers Authorization, Master-Account-Id, Account-Id, Content-Type
Query Parameters n/a
Body visitorPhone,emailNotifications

 

The following fields are editable BASED on the (Ticket Status)

Field Name Status
visitorPhone All statuses except Approval Denied, Completed, or Cancelled
emailNotifications All statuses except Approval Denied, Completed, or Cancelled

 

Sample Curl Request

curl --location --request PUT 'https://api.digitalrealty.com/v1/facility-access/access-tickets/<workOrderId>' \
--header 'Master-Account-Id: <Master-Account-Id>' \
--header 'Account-Id: <Account-Id>' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "visitorPhone":"+918898805959",
    "emailNotifications": "test2@email.com,jane_doe@email.com"
}'

 

Headers

Field Name Mandatory Type Description
Master-Account-Id true string Customer master account identifier.
Account-Id true string Customer account identifier.
Authorization true string Token-based authentication.
Content-Type true string Indicates the request body format.
value: [application/json]

 

Query Parameters

n/a

Body

Field Name Mandatory Type Description
visitorPhone false string(40) Phone number of the requestor.
emailNotifications false string(32k) Personnel's email addresses designated to be notified of the request. You can add one or more email addresses in the field by inserting a comma as a separator : "email_1, email_2, email_3".

 

 Sample JSON Response

{
    "workOrderId": "WO8741409"
}

 

Payload Description

Field Name Type Description
workOrderId string(20) Identifier of the facility access work order.

7. Cancel Visitor Access Ticket

The method can be used to cancel a facility access request while the ticket status is still "New" or "In Progress". 

 Method PUT
End point /v1/facility-access/access-tickets/{workOrderId}/cancel
Headers Authorization, Master-Account-Id, Account-Id, Content-Type
Query Parameters n/a
Body cancelReason

 

Sample Curl Request

curl --location --request PUT 'https://api.digitalrealty.com/v1/facility-access/access-tickets/<workOrderId>/cancel' \
--header 'Master-Account-Id: <Master-Account-Id>' \
--header 'Account-Id: <Account-Id>' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "cancelReason": "Duplicate request"
}'

 

Headers

Field Name Mandatory Type Description
Master-Account-Id true string Customer master account identifier.
Account-Id true string Customer account identifier.
Authorization true string Token-based authentication.
Content-Type true string Indicates the request body format.
value: [application/json]

 

Query Parameters

n/a

Body

Field Name Mandatory Type Description
cancelReason false string(enum) Reason of the cancellation.
values: [Duplicate request, Request entered in error, Request no longer needed]
default: [Request no longer needed]

 

Sample JSON Response

{
    "result": {
        "status": "Work Order WO8741481 has been cancelled."
    }
}

 

Payload Description

Field Name Type Description
status string(255) Acknowledgement message of the cancellation.

8. Add a Comment or Attachment

Text (formatted, long)

Add Comments


Add comments to an existing work order. Multiple comments can be added to a work order as long as the status of the order is not closed or cancelled. Refer to the Comments API instructions on how to add comments. You may skip this step if you already know how to add comments.

 

Text (formatted, long)

Add Attachments


Add attachments to an existing work order. Multiple attachments can be added to a work order as long as the status of the order is not closed or cancelled. Refer to the Attachments API for instructions on how to add attachments. You may skip this step if you already know how to add attachments.

Response Codes

Text (formatted, long)

Please check the Response Codes overview in case of any issues.


Need Help?

Have not found what you are looking for, please do not hesitate to reach out to us!

globe