Reports: Query

Lưu ý quan trọng: Các yêu cầu API đối với phương thức này hiện yêu cầu quyền truy cập vào phạm vi https://www.googleapis.com/auth/youtube.readonly.

Phương thức này cho phép bạn truy xuất nhiều báo cáo Analytics khác nhau. Mỗi yêu cầu đều sử dụng các tham số truy vấn để chỉ định mã nhận dạng kênh hoặc chủ sở hữu nội dung, ngày bắt đầu, ngày kết thúc và ít nhất một chỉ số. Bạn cũng có thể cung cấp các tham số truy vấn bổ sung, chẳng hạn như phương diện, bộ lọc và hướng dẫn sắp xếp.

  • Chỉ số là các số đo riêng lẻ về hoạt động của người dùng, chẳng hạn như số lượt xem video hoặc lượt đánh giá (lượt thích và không thích).
  • Phương diện là các tiêu chí chung được dùng để tổng hợp dữ liệu, chẳng hạn như ngày xảy ra hoạt động của người dùng hoặc quốc gia nơi người dùng sinh sống. Trong một báo cáo, mỗi hàng dữ liệu có một tổ hợp giá trị phương diện riêng biệt.
  • Bộ lọc là những giá trị phương diện chỉ định dữ liệu sẽ được truy xuất. Ví dụ: bạn có thể truy xuất dữ liệu cho một quốc gia cụ thể, một video cụ thể hoặc một nhóm video.

Lưu ý: Báo cáo của chủ sở hữu nội dung chỉ dành cho những đối tác nội dung của YouTube tham gia Chương trình Đối tác YouTube.

Các trường hợp sử dụng phổ biến

Yêu cầu

Yêu cầu HTTP

GET https://youtubeanalytics.googleapis.com/v2/reports

Tất cả các yêu cầu gửi đến YouTube Analytics API đều phải được cho phép. Hướng dẫn uỷ quyền giải thích cách sử dụng giao thức OAuth 2.0 để truy xuất mã thông báo uỷ quyền.

Các yêu cầu gửi đến YouTube Analytics API sử dụng các phạm vi uỷ quyền sau:

Phạm vi
https://www.googleapis.com/auth/yt-analytics.readonly Xem báo cáo của YouTube Analytics cho nội dung trên YouTube. Phạm vi này cho phép truy cập vào các chỉ số về hoạt động của người dùng, chẳng hạn như số lượt xem và số lượt đánh giá.
https://www.googleapis.com/auth/yt-analytics-monetary.readonly Xem báo cáo của YouTube Analytics về tài chính cho nội dung trên YouTube. Phạm vi này cho phép truy cập vào các chỉ số về hoạt động của người dùng, cũng như các chỉ số về doanh thu ước tính và hiệu suất quảng cáo.
https://www.googleapis.com/auth/youtube Quản lý tài khoản YouTube của bạn. Trong YouTube Analytics API, chủ sở hữu kênh sử dụng phạm vi này để quản lý các nhóm và mục trong nhóm của YouTube Analytics.
https://www.googleapis.com/auth/youtubepartner Xem và quản lý tài sản cũng như nội dung được kết hợp của bạn trên YouTube. Trong YouTube Analytics API, chủ sở hữu nội dung sử dụng phạm vi này để quản lý các nhóm và mục trong nhóm của YouTube Analytics.

Thông số

Các bảng sau đây liệt kê các tham số truy vấn bắt buộc và không bắt buộc cho các yêu cầu API để truy xuất báo cáo truy vấn. Các tham số truy vấn tiêu chuẩn được liệt kê trong bảng cũng là tham số không bắt buộc và được nhiều API của Google hỗ trợ.

Thông số
Tham số bắt buộc
endDate string
Ngày kết thúc để tìm nạp dữ liệu YouTube Analytics. Giá trị phải ở định dạng YYYY-MM-DD.

Phản hồi của API chứa dữ liệu cho đến ngày cuối cùng mà tất cả các chỉ số trong truy vấn có sẵn tại thời điểm truy vấn. Ví dụ: nếu yêu cầu chỉ định ngày kết thúc là ngày 5 tháng 7 năm 2017 và các giá trị cho tất cả chỉ số được yêu cầu chỉ có sẵn cho đến ngày 3 tháng 7 năm 2017, thì đó sẽ là ngày cuối cùng mà dữ liệu được đưa vào phản hồi. (Điều này vẫn đúng ngay cả khi dữ liệu cho một số chỉ số được yêu cầu có sẵn cho ngày 4 tháng 7 năm 2017.)
Lưu ý: Trong phiên bản 1 của API, tham số này có tên là end-date.
ids string
Xác định kênh YouTube hoặc chủ sở hữu nội dung mà bạn đang truy xuất dữ liệu YouTube Analytics.

  • Để yêu cầu dữ liệu cho một kênh YouTube, hãy đặt giá trị tham số ids thành channel==MINE hoặc channel==CHANNEL_ID, trong đó CHANNEL_ID xác định kênh YouTube của người dùng hiện được xác thực.
  • Để yêu cầu dữ liệu cho một chủ sở hữu nội dung trên YouTube, hãy đặt giá trị tham số ids thành contentOwner==OWNER_NAME, trong đó OWNER_NAMEcontent owner ID của người dùng.

metrics string
Một danh sách các chỉ số YouTube Analytics được phân tách bằng dấu phẩy, chẳng hạn như views hoặc likes,dislikes. Hãy xem tài liệu về báo cáo kênh hoặc báo cáo chủ sở hữu nội dung để biết danh sách các báo cáo mà bạn có thể truy xuất và các chỉ số có trong mỗi báo cáo. (Tài liệu Chỉ số chứa định nghĩa cho tất cả các chỉ số.)
startDate string
Ngày bắt đầu để tìm nạp dữ liệu YouTube Analytics. Giá trị phải ở định dạng YYYY-MM-DD.
Lưu ý: Trong phiên bản 1 của API, tham số này có tên là start-date.
Thông số không bắt buộc
currency string
Đơn vị tiền tệ mà API sẽ dùng để chỉ định các chỉ số doanh thu ước tính sau đây: estimatedRevenue, estimatedAdRevenue, estimatedRedPartnerRevenue, grossRevenue, cpm, playbackBasedCpm. Các giá trị mà API trả về cho những chỉ số đó là giá trị ước tính được tính bằng tỷ giá hối đoái thay đổi hằng ngày. Nếu không có chỉ số nào trong số đó được yêu cầu, thì tham số này sẽ bị bỏ qua.

Giá trị tham số là mã đơn vị tiền tệ gồm 3 chữ cái theo ISO 4217 trong danh sách đơn vị tiền tệ bên dưới. API sẽ trả về lỗi nếu bạn chỉ định một đơn vị tiền tệ không được hỗ trợ. Giá trị mặc định là USD.

dimensions string
Một danh sách các phương diện trong YouTube Analytics được phân tách bằng dấu phẩy, chẳng hạn như video hoặc ageGroup,gender. Hãy xem tài liệu về báo cáo kênh hoặc báo cáo chủ sở hữu nội dung để biết danh sách các báo cáo mà bạn có thể truy xuất và các phương diện được dùng cho những báo cáo đó. (Tài liệu Phương diện chứa định nghĩa cho tất cả các phương diện.)
filters string
Danh sách các bộ lọc cần được áp dụng khi truy xuất dữ liệu YouTube Analytics. Tài liệu về báo cáo kênhbáo cáo chủ sở hữu nội dung xác định những phương diện có thể dùng để lọc từng báo cáo, đồng thời tài liệu Phương diện xác định những phương diện đó.

Nếu một yêu cầu sử dụng nhiều bộ lọc, hãy kết hợp các bộ lọc đó với dấu chấm phẩy (;) và bảng kết quả được trả về sẽ đáp ứng cả hai bộ lọc. Ví dụ: giá trị tham số filtersvideo==dMH0bHeiRNg;country==IT sẽ giới hạn tập kết quả chỉ bao gồm dữ liệu cho video đã cho ở Ý.

Chỉ định nhiều giá trị cho một bộ lọc

API hỗ trợ khả năng chỉ định nhiều giá trị cho các bộ lọc video, playlistchannel. Để làm như vậy, hãy chỉ định một danh sách riêng biệt gồm mã nhận dạng video, danh sách phát hoặc kênh mà phản hồi API cần lọc. Ví dụ: giá trị tham số filtersvideo==pd1FJh59zxQ,Zhawgd0REhA;country==IT sẽ giới hạn tập kết quả chỉ bao gồm dữ liệu cho các video đã cho ở Ý. Giá trị tham số có thể chỉ định tối đa 500 mã nhận dạng.

Khi chỉ định nhiều giá trị cho cùng một bộ lọc, bạn cũng có thể thêm bộ lọc đó vào danh sách phương diện mà bạn chỉ định cho yêu cầu. Điều này vẫn đúng ngay cả khi bộ lọc không được liệt kê là một phương diện được hỗ trợ cho một báo cáo cụ thể. Nếu bạn thêm bộ lọc vào danh sách phương diện, thì API cũng sẽ sử dụng các giá trị bộ lọc để nhóm kết quả.

Ví dụ: giả sử bạn truy xuất báo cáo nguồn lưu lượng truy cập của một kênh. Báo cáo này tổng hợp số liệu thống kê về lượt xem dựa trên cách người xem tiếp cận nội dung video của kênh. Giả sử yêu cầu của bạn có tham số filters xác định một danh sách gồm 10 video mà bạn muốn nhận dữ liệu.
  • Nếu bạn thêm video vào giá trị của tham số dimensions, thì phản hồi API sẽ cung cấp số liệu thống kê riêng về nguồn lưu lượng truy cập cho từng video trong số 10 video.
  • Nếu bạn không thêm video vào giá trị của tham số dimensions, thì phản hồi API sẽ tổng hợp số liệu thống kê về nguồn lưu lượng truy cập cho cả 10 video.
includeHistoricalChannelData boolean
Lưu ý: Tham số này chỉ áp dụng cho báo cáo của chủ sở hữu nội dung.

Cho biết liệu phản hồi API có nên bao gồm dữ liệu về thời gian xem và số lượt xem của các kênh trong khoảng thời gian trước khi các kênh được liên kết với chủ sở hữu nội dung hay không. Giá trị tham số mặc định là false, tức là phản hồi API chỉ bao gồm dữ liệu về thời gian xem và số lượt xem từ những ngày mà các kênh được liên kết với chủ sở hữu nội dung.

Điều quan trọng cần nhớ là các kênh có thể được liên kết với một chủ sở hữu nội dung vào những ngày khác nhau. Nếu yêu cầu API đang truy xuất dữ liệu cho nhiều kênh và giá trị tham số là false, thì phản hồi API sẽ chứa dữ liệu dựa trên ngày liên kết của từng kênh tương ứng. Nếu giá trị tham số là true, thì phản hồi của API sẽ chứa dữ liệu khớp với ngày được chỉ định trong yêu cầu API.
Lưu ý: Trong phiên bản 1 của API, tham số này có tên là include-historical-channel-data.
maxResults integer
Số lượng hàng tối đa cần đưa vào phản hồi.
Lưu ý: Trong phiên bản 1 của API, tham số này có tên là max-results.
sort string
Danh sách được phân tách bằng dấu phẩy gồm các phương diện hoặc chỉ số xác định thứ tự sắp xếp cho dữ liệu YouTube Analytics. Theo mặc định, thứ tự sắp xếp là tăng dần. Tiền tố - sẽ sắp xếp theo thứ tự giảm dần.
startIndex integer
Chỉ mục bắt đầu từ 1 của thực thể đầu tiên cần truy xuất. (Giá trị mặc định là 1.) Sử dụng tham số này làm cơ chế phân trang cùng với tham số max-results.
Lưu ý: Trong phiên bản 1 của API, tham số này có tên là start-index.
Tham số chuẩn
access_token Mã thông báo OAuth 2.0 cho người dùng hiện tại.
alt Tham số này không được hỗ trợ trong phiên bản 2 của API. Phiên bản này chỉ hỗ trợ các phản hồi JSON.Định dạng dữ liệu cho phản hồi API.
  • Giá trị hợp lệ: json, csv
  • Giá trị mặc định: json
callback Hàm gọi lại.
  • Tên của hàm callback JavaScript xử lý phản hồi.
  • Được dùng trong các yêu cầu JSON-P của JavaScript.
prettyPrint

Trả về phản hồi có thụt lề và dấu ngắt dòng.

  • Trả về phản hồi ở định dạng dễ đọc nếu true.
  • Giá trị mặc định: true.
  • Khi bạn đặt giá trị này thành false, kích thước tải trọng phản hồi có thể giảm, điều này có thể giúp cải thiện hiệu suất trong một số môi trường.
quotaUser Tham số này được hỗ trợ trong phiên bản 1 của API (hiện không còn được dùng nữa). Tham số này không được hỗ trợ trong phiên bản 2 của API.
userIp Tham số này được hỗ trợ trong phiên bản 1 của API (hiện không còn được dùng nữa). Tham số này không được hỗ trợ trong phiên bản 2 của API.

Nội dung yêu cầu

Không gửi nội dung yêu cầu khi gọi phương thức này.

Phản hồi

Như đã lưu ý trong định nghĩa tham số alt, API có thể trả về các phản hồi ở định dạng JSON hoặc CSV. Thông tin về nội dung phản hồi cho từng loại được trình bày dưới đây:

JSON
{
  "kind": "youtubeAnalytics#resultTable",
  "columnHeaders": [
    {
      "name": string,
      "dataType": string,
      "columnType": string
    },
    ... more headers ...
  ],
  "rows": [
    [
      {value}, {value}, ...
    ]
  ]
}
Thuộc tính
kind string
Giá trị này chỉ định loại dữ liệu có trong phản hồi API. Đối với phương thức query, giá trị thuộc tính kind sẽ là youtubeAnalytics#resultTable. Tuy nhiên, nếu API hỗ trợ các phương thức khác, thì các phản hồi API cho những phương thức đó có thể giới thiệu các giá trị thuộc tính kind khác.
columnHeaders[] list
Giá trị này chỉ định thông tin về dữ liệu được trả về trong các trường rows. Mỗi mục trong danh sách columnHeaders xác định một trường được trả về trong giá trị rows, chứa một danh sách dữ liệu được phân tách bằng dấu phẩy.

Danh sách columnHeaders bắt đầu bằng các phương diện được chỉ định trong yêu cầu API, theo sau là các chỉ số được chỉ định trong yêu cầu API. Thứ tự của cả phương diện và chỉ số đều khớp với thứ tự trong yêu cầu API.

Ví dụ: nếu yêu cầu API chứa các tham số dimensions=ageGroup,gender&metrics=viewerPercentage, thì phản hồi API sẽ trả về các cột theo thứ tự sau: ageGroup,gender,viewerPercentage.
columnHeaders[].name string
Tên của phương diện hoặc chỉ số.
columnHeaders[].columnType string
Loại cột (DIMENSION hoặc METRIC).
columnHeaders[].dataType string
Loại dữ liệu trong cột (STRING, INTEGER, FLOAT, v.v.).
rows[] list
Danh sách này chứa tất cả các hàng của bảng kết quả. Mỗi mục trong danh sách là một mảng chứa dữ liệu được phân tách bằng dấu phẩy, tương ứng với một hàng dữ liệu. Thứ tự của các trường dữ liệu được phân tách bằng dấu phẩy sẽ khớp với thứ tự của các cột được liệt kê trong trường columnHeaders.

Nếu không có dữ liệu cho truy vấn đã cho, phần tử rows sẽ bị bỏ qua trong phản hồi.

Phản hồi cho một truy vấn có phương diện day sẽ không chứa các hàng cho những ngày gần đây nhất.

CSV
day, views, likes, ...
"2012-01-01", 12.0, 3, ...
"2012-01-02", 16.0, 2, ...
"2012-01-03", 18.0, 8, ...
...

Ví dụ

Lưu ý: Các đoạn mã mẫu sau đây có thể không phải là ví dụ cho mọi ngôn ngữ lập trình được hỗ trợ. Hãy xem tài liệu về thư viện ứng dụng để biết danh sách các ngôn ngữ được hỗ trợ.

JavaScript

Ví dụ này gọi YouTube Analytics API để truy xuất số lượt xem hằng ngày và các chỉ số khác cho kênh của người dùng uỷ quyền trong năm dương lịch 2017. Mẫu này sử dụng Thư viện ứng dụng JavaScript của Google API.

Trước khi chạy mẫu này cục bộ lần đầu tiên, bạn cần thiết lập thông tin xác thực uỷ quyền cho dự án của mình:
  1. Tạo hoặc chọn một dự án trong Google API Console.
  2. Bật YouTube Analytics API cho dự án của bạn.
  3. Ở đầu trang Credentials (Thông tin xác thực), hãy chọn thẻ OAuth consent screen (Màn hình yêu cầu đồng ý OAuth). Chọn một Địa chỉ email, nhập Tên sản phẩm (nếu chưa đặt) rồi nhấp vào nút Lưu.
  4. Trên trang Thông tin xác thực, hãy nhấp vào nút Tạo thông tin xác thực rồi chọn Mã ứng dụng OAuth.
  5. Chọn loại ứng dụng là Ứng dụng web.
  6. Trong trường Nguồn gốc JavaScript được uỷ quyền, hãy nhập URL mà bạn sẽ phân phát mẫu mã. Ví dụ: bạn có thể sử dụng http://localhost:8000 hoặc http://yourserver.example.com. Bạn có thể để trống trường URI chuyển hướng được uỷ quyền.
  7. Nhấp vào nút Tạo để hoàn tất quá trình tạo thông tin đăng nhập.
  8. Trước khi đóng hộp thoại, hãy sao chép mã ứng dụng khách. Bạn sẽ cần đặt mã này vào mẫu mã.

Sau đó, hãy lưu mẫu vào một tệp cục bộ. Trong mẫu, hãy tìm dòng sau và thay thế YOUR_CLIENT_ID bằng mã ứng dụng khách mà bạn nhận được khi thiết lập thông tin xác thực uỷ quyền.

gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'});

Giờ đây, bạn đã sẵn sàng kiểm thử mẫu thực tế:

  1. Mở tệp cục bộ bằng trình duyệt web và mở bảng điều khiển gỡ lỗi trong trình duyệt. Bạn sẽ thấy một trang có 2 nút.
  2. Nhấp vào nút uỷ quyền và tải để khởi chạy quy trình uỷ quyền người dùng. Nếu cho phép ứng dụng truy xuất dữ liệu kênh của bạn, bạn sẽ thấy các dòng sau đây in ra bảng điều khiển trong trình duyệt:
    Sign-in successful
    GAPI client loaded for API
  3. Nếu bạn thấy thông báo lỗi thay vì các dòng ở trên, hãy xác nhận rằng bạn đang tải tập lệnh từ URI chuyển hướng được uỷ quyền mà bạn đã thiết lập cho dự án của mình và bạn đã đặt mã ứng dụng khách vào mã như mô tả ở trên.
  4. Nhấp vào nút execute (thực thi) để gọi API. Bạn sẽ thấy một đối tượng response in ra bảng điều khiển trong trình duyệt. Trong đối tượng đó, thuộc tính result sẽ liên kết với một đối tượng chứa dữ liệu API.
<script src="https://apis.google.com/js/api.js"></script>
<script>
  function authenticate() {
    return gapi.auth2.getAuthInstance()
        .signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"})
        .then(function() { console.log("Sign-in successful"); },
              function(err) { console.error("Error signing in", err); });
  }
  function loadClient() {
    return gapi.client.load("https://youtubeanalytics.googleapis.com/$discovery/rest?version=v2")
        .then(function() { console.log("GAPI client loaded for API"); },
              function(err) { console.error("Error loading GAPI client for API", err); });
  }
  // Make sure the client is loaded and sign-in is complete before calling this method.
  function execute() {
    return gapi.client.youtubeAnalytics.reports.query({
      "ids": "channel==MINE",
      "startDate": "2017-01-01",
      "endDate": "2017-12-31",
      "metrics": "views,estimatedMinutesWatched,averageViewDuration,averageViewPercentage,subscribersGained",
      "dimensions": "day",
      "sort": "day"
    })
        .then(function(response) {
                // Handle the results here (response.result has the parsed body).
                console.log("Response", response);
              },
              function(err) { console.error("Execute error", err); });
  }
  gapi.load("client:auth2", function() {
    gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'});
  });
</script>
<button onclick="authenticate().then(loadClient)">authorize and load</button>
<button onclick="execute()">execute</button>

Python

Ví dụ này gọi YouTube Analytics API để truy xuất số lượt xem hằng ngày và các chỉ số khác cho kênh của người dùng uỷ quyền trong năm dương lịch 2017. Mẫu này sử dụng Thư viện ứng dụng Python cho API của Google.

Trước khi chạy mẫu này cục bộ lần đầu tiên, bạn cần thiết lập thông tin xác thực uỷ quyền cho dự án của mình:
  1. Tạo hoặc chọn một dự án trong Google API Console.
  2. Bật YouTube Analytics API cho dự án của bạn.
  3. Ở đầu trang Credentials (Thông tin xác thực), hãy chọn thẻ OAuth consent screen (Màn hình yêu cầu đồng ý OAuth). Chọn một Địa chỉ email, nhập Tên sản phẩm (nếu chưa đặt) rồi nhấp vào nút Lưu.
  4. Trên trang Thông tin xác thực, hãy nhấp vào nút Tạo thông tin xác thực rồi chọn Mã ứng dụng OAuth.
  5. Chọn loại ứng dụng Other (Khác), nhập tên "YouTube Analytics API Quickstart" (Hướng dẫn nhanh về YouTube Analytics API) rồi nhấp vào nút Create (Tạo).
  6. Nhấp vào OK để đóng hộp thoại kết quả.
  7. Nhấp vào nút (Tải JSON xuống) ở bên phải mã ứng dụng.
  8. Di chuyển tệp đã tải xuống vào thư mục làm việc.

Bạn cũng cần cài đặt Thư viện ứng dụng API của Google cho Python và một số thư viện bổ sung:

pip install --upgrade google-api-python-client
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2

Giờ đây, bạn đã sẵn sàng kiểm thử mẫu thực tế:

  1. Sao chép mã mẫu bên dưới vào thư mục làm việc của bạn.
  2. Trong mẫu, hãy cập nhật giá trị của biến CLIENT_SECRETS_FILE cho khớp với vị trí của tệp mà bạn đã tải xuống sau khi thiết lập thông tin xác thực uỷ quyền.
  3. Chạy mã mẫu trong cửa sổ dòng lệnh:
    python yt_analytics_v2.py
  4. Thực hiện quy trình uỷ quyền. Quy trình uỷ quyền có thể tự động tải trong trình duyệt của bạn hoặc bạn có thể cần sao chép URL uỷ quyền vào một cửa sổ trình duyệt. Ở cuối quy trình uỷ quyền, nếu cần, hãy dán mã uỷ quyền xuất hiện trong trình duyệt vào cửa sổ thiết bị đầu cuối rồi nhấp vào [return].
  5. Truy vấn API sẽ thực thi và phản hồi JSON sẽ được xuất ra cửa sổ dòng lệnh.
# -*- coding: utf-8 -*-

import os
import google.oauth2.credentials
import google_auth_oauthlib.flow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from google_auth_oauthlib.flow import InstalledAppFlow

SCOPES = ['https://www.googleapis.com/auth/yt-analytics.readonly']

API_SERVICE_NAME = 'youtubeAnalytics'
API_VERSION = 'v2'
CLIENT_SECRETS_FILE = 'YOUR_CLIENT_SECRET_FILE.json'
def get_service():
  flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)
  credentials = flow.run_console()
  return build(API_SERVICE_NAME, API_VERSION, credentials = credentials)

def execute_api_request(client_library_function, **kwargs):
  response = client_library_function(
    **kwargs
  ).execute()

  print(response)

if __name__ == '__main__':
  # Disable OAuthlib's HTTPs verification when running locally.
  # *DO NOT* leave this option enabled when running in production.
  os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'

  youtubeAnalytics = get_service()
  execute_api_request(
      youtubeAnalytics.reports().query,
      ids='channel==MINE',
      startDate='2017-01-01',
      endDate='2017-12-31',
      metrics='estimatedMinutesWatched,views,likes,subscribersGained'
      dimensions='day',
      sort='day'
  )

Hãy dùng thử!

Sử dụng APIs Explorer để gọi API này và xem yêu cầu cũng như phản hồi của API.