# Profile Object

This page describes Profile JSON schema and how to use it for profile creation, editing or just reading. If you are interested in any of those operations, have a look at the corresponding requests first in our API reference.

We will discuss profile fields, their meanings, how to generate them yourself and how you can apply this knowledge to your application. But, before diving into it, first we need to define which types of fields you can encounter:

  1. Read-only These fields cannot be changed, so you cannot include them in your request body when creating or editing profiles. Though, the server will always include them in response payload when giving it to you, regardless of whether it is a response to a GET request when listing profiles or to POST request to create a profile.
    Example: profile _id cannot be changed, so you cannot include it in create/edit requests, but it is always present when server responds with a Profile object.

  2. Write-only These fields can be present only in request payload when creating or editing profiles.
    Example: profile's parentId is used for setting the direct parent of the profile on creation or editing. But every GET request will have field path instead, to show the full path to the profile.

  3. If a field is not annotated with Read-only nor Write-only , then the field is both readable and writeable. It will be present in server responses, and you are also able to use it when creating or editing profiles.

  4. Nullable Indicates that a field is nullable and can be absent in server responses and when you create a profile. Note: it does not apply to editing profiles. (More on that later)

# Profile

Object

Profile object with the following schema:

  • _id String Read-only - profile ID.
  • ownerId String - ID of the user who owns the profile. When creating a profile, initialized with the ID of the user who created it.
  • clusterId String Read-only - ID of the cluster the profile belongs to.
  • path Array<String> Read-only - Array with IDs that form a full path to the profile up to the direct parent. The first element is always equal to clusterId. Might contain IDs of nonexistent groups.
  • parentId String Write-only - ID of the direct parent you want to move the profile to. Must be either a cluster group or cluster itself. You cannot move profile to other cluster.
  • proxyId String Nullable - ID of the proxy from Proxy List. Has precedence over proxy field if both are present.
  • proxy Object Nullable - Manual proxy object with the following schema:
    • type String - possible values: socks5, http, https, ssh
    • host String
    • port Int - number in the range of 1-65535
    • username String Nullable
    • password String Nullable
    • ipChangeUrl String Nullable - we recommend including protocol in the URL
  • name String Nullable - Profile name. You could see that Surfinite App shows profile ID if the name is null, but the object actually contains null value and is not set to ID automatically.
  • description String Nullable
  • metadata Object Read-only - Metadata object containing info about profile OS and Screen with t:
    • osType String Nullable - type of the OS, possible values: windows, macos, linux
    • osName String Nullable - OS version, like Windows 11, Monterey, Big Sur
    • screen Int Nullable - dimensions of the screen of form <width> x <height>
      If a field is null - this means the spoofing is disabled.
  • deletedOn Long Read-only Nullable - Unix timestamp of when the profile was deleted. If this field is not null - this means that the profile is currently in Recycle Bin.
  • deletedBy String Read-only Nullable - ID of the user who deleted the profile.
  • createdOn Long Read-only - Unix timestamp of when the profile was created.
  • lastLaunched Long Read-only Nullable - Unix timestamp of the last launch of this profile.
  • categoryId String Nullable - ID of the category assigned to this profile.
  • statusId String Nullable - ID of the status assigned to this profile.
  • clusterBookmarks Array<String> - Array of bookmark IDs that were assigned to this profile.
  • manualBookmarks Array<Object> - Array of bookmark objects. Bookmark schema is:
    • name String
    • url String - if you omit URL protocol, https will be used
  • clusterExtensions Array<String> - Array of extension IDs. These IDs are from Chrome Web Store.
  • manualExtensions Array<String> - Array of extension IDs. These IDs are from Chrome Web Store.
  • tags Array<String> - Array of tags.
  • fingerprint Object Nullable - Object containing fingerprint fields. The next section will describe them.