/*
* Copyright 2007-2018 Evernote Corporation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This file contains the allowable limits for the various fields and
* collections that make up the EDAM data model.
*/
namespace as3 com.evernote.edam.limits
namespace java com.evernote.edam.limits
namespace csharp Evernote.EDAM.Limits
namespace py evernote.edam.limits
namespace cpp evernote.limits
namespace rb Evernote.EDAM.Limits
namespace php EDAM.Limits
namespace cocoa EDAM
namespace perl EDAMLimits
namespace go edam
// ========================== string field limits ==============================
/**
* Minimum length of any string-based attribute, in Unicode chars
*/
const i32 EDAM_ATTRIBUTE_LEN_MIN = 1;
/**
* Maximum length of any string-based attribute, in Unicode chars
*/
const i32 EDAM_ATTRIBUTE_LEN_MAX = 4096;
/**
* Any string-based attribute must match the provided regular expression.
* This excludes all Unicode line endings and control characters.
*/
const string EDAM_ATTRIBUTE_REGEX = "^[^\\p{Cc}\\p{Zl}\\p{Zp}]{1,4096}$";
/**
* The maximum number of values that can be stored in a list-based attribute
* (e.g. see UserAttributes.recentMailedAddresses)
*/
const i32 EDAM_ATTRIBUTE_LIST_MAX = 100;
/**
* The maximum number of entries that can be stored in a map-based attribute
* such as applicationData fields in Resources and Notes.
*/
const i32 EDAM_ATTRIBUTE_MAP_MAX = 100;
/**
* The minimum length of a GUID generated by the Evernote service
*/
const i32 EDAM_GUID_LEN_MIN = 36;
/**
* The maximum length of a GUID generated by the Evernote service
*/
const i32 EDAM_GUID_LEN_MAX = 36;
/**
* GUIDs generated by the Evernote service will match the provided pattern
*/
const string EDAM_GUID_REGEX =
"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$";
/**
* The minimum length of any email address
*/
const i32 EDAM_EMAIL_LEN_MIN = 6;
/**
* The maximum length of any email address
*/
const i32 EDAM_EMAIL_LEN_MAX = 255;
/**
* A regular expression that matches the part of an email address before
* the '@' symbol.
*/
const string EDAM_EMAIL_LOCAL_REGEX =
"^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(\\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*$";
/**
* A regular expression that matches the part of an email address after
* the '@' symbol.
*/
const string EDAM_EMAIL_DOMAIN_REGEX =
"^[A-Za-z0-9-]*[A-Za-z0-9](\\.[A-Za-z0-9-]*[A-Za-z0-9])*\\.([A-Za-z]{2,})$";
/**
* A regular expression that must match any email address given to Evernote.
* Email addresses must comply with RFC 2821 and 2822.
*/
const string EDAM_EMAIL_REGEX =
"^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(\\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@[A-Za-z0-9-]*[A-Za-z0-9](\\.[A-Za-z0-9-]*[A-Za-z0-9])*\\.([A-Za-z]{2,})$";
/**
* A regular expression that must match any VAT ID given to Evernote.
* ref http://en.wikipedia.org/wiki/VAT_identification_number
* ref http://my.safaribooksonline.com/book/programming/regular-expressions/9780596802837/4dot-validation-and-formatting/id2995136
*/
const string EDAM_VAT_REGEX =
"^(AT)?U[0-9]{8}$|^(BE)?0?[0-9]{9}$|^(BG)?[0-9]{9,10}$|^(CY)?[0-9]{8}L$|^(CZ)?[0-9]{8,10}$|^(DE)?[0-9]{9}$|^(DK)?[0-9]{8}$|^(EE)?[0-9]{9}$|^(EL|GR)?[0-9]{9}$|^(ES)?[0-9A-Z][0-9]{7}[0-9A-Z]$|^(FI)?[0-9]{8}$|^(FR)?[0-9A-Z]{2}[0-9]{9}$|^(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})$|^(HU)?[0-9]{8}$|^(IE)?[0-9]{7}[A-Z]{1,2}$|^(IT)?[0-9]{11}$|^(LT)?([0-9]{9}|[0-9]{12})$|^(LU)?[0-9]{8}$|^(LV)?[0-9]{11}$|^(MT)?[0-9]{8}$|^(NL)?[0-9]{9}B[0-9]{2}$|^(PL)?[0-9]{10}$|^(PT)?[0-9]{9}$|^(RO)?[0-9]{2,10}$|^(SE)?[0-9]{12}$|^(SI)?[0-9]{8}$|^(SK)?[0-9]{10}$|^[0-9]{9}MVA$|^[0-9]{6}$|^CHE[0-9]{9}(TVA|MWST|IVA)$";
/**
* The minimum length of a timezone specification string
*/
const i32 EDAM_TIMEZONE_LEN_MIN = 1;
/**
* The maximum length of a timezone specification string
*/
const i32 EDAM_TIMEZONE_LEN_MAX = 32;
/**
* Any timezone string given to Evernote must match the provided pattern.
* This permits either a locale-based standard timezone or a GMT offset.
* E.g.:<ul>
* <li>America/Los_Angeles</li>
* <li>GMT+08:00</li>
* </ul>
*/
const string EDAM_TIMEZONE_REGEX =
"^([A-Za-z_-]+(/[A-Za-z_-]+)*)|(GMT(-|\\+)[0-9]{1,2}(:[0-9]{2})?)$";
/**
* The minimum length of any MIME type string given to Evernote
*/
const i32 EDAM_MIME_LEN_MIN = 3;
/**
* The maximum length of any MIME type string given to Evernote
*/
const i32 EDAM_MIME_LEN_MAX = 255;
/**
* Any MIME type string given to Evernote must match the provided pattern.
* E.g.: image/gif
*/
const string EDAM_MIME_REGEX = "^[A-Za-z]+/[A-Za-z0-9._+-]+$";
/** Canonical MIME type string for GIF image resources */
const string EDAM_MIME_TYPE_GIF = "image/gif";
/** Canonical MIME type string for JPEG image resources */
const string EDAM_MIME_TYPE_JPEG = "image/jpeg";
/** Canonical MIME type string for PNG image resources */
const string EDAM_MIME_TYPE_PNG = "image/png";
/** Canonical MIME type string for TIFF image resources */
const string EDAM_MIME_TYPE_TIFF = "image/tiff";
/** Canonical MIME type string for BMP image resources */
const string EDAM_MIME_TYPE_BMP = "image/bmp";
/** Canonical MIME type string for WAV audio resources */
const string EDAM_MIME_TYPE_WAV = "audio/wav";
/** Canonical MIME type string for MP3 audio resources */
const string EDAM_MIME_TYPE_MP3 = "audio/mpeg";
/** Canonical MIME type string for AMR audio resources */
const string EDAM_MIME_TYPE_AMR = "audio/amr";
/** Canonical MIME type string for AAC audio resources */
const string EDAM_MIME_TYPE_AAC = "audio/aac";
/** Canonical MIME type string for MP4 audio resources */
const string EDAM_MIME_TYPE_M4A = "audio/mp4";
/** Canonical MIME type string for MP4 video resources */
const string EDAM_MIME_TYPE_MP4_VIDEO = "video/mp4";
/** Canonical MIME type string for Evernote Ink resources */
const string EDAM_MIME_TYPE_INK = "application/vnd.evernote.ink";
/** Canonical MIME type string for PDF resources */
const string EDAM_MIME_TYPE_PDF = "application/pdf";
/** MIME type used for attachments of an unspecified type */
const string EDAM_MIME_TYPE_DEFAULT = "application/octet-stream";
/**
* The set of resource MIME types that are expected to be handled
* correctly by all of the major Evernote client applications.
*/
const set<string> EDAM_MIME_TYPES = [
EDAM_MIME_TYPE_GIF,
EDAM_MIME_TYPE_JPEG,
EDAM_MIME_TYPE_PNG,
EDAM_MIME_TYPE_WAV,
EDAM_MIME_TYPE_MP3,
EDAM_MIME_TYPE_AMR,
EDAM_MIME_TYPE_INK,
EDAM_MIME_TYPE_PDF,
EDAM_MIME_TYPE_MP4_VIDEO,
EDAM_MIME_TYPE_AAC,
EDAM_MIME_TYPE_M4A
];
/**
* The set of MIME types that Evernote will parse and index for
* searching. With exception of images, PDFs and plain text files,
* which are handled in a different way.
*/
const set<string> EDAM_INDEXABLE_RESOURCE_MIME_TYPES = [
"application/msword",
"application/mspowerpoint",
"application/excel",
"application/vnd.ms-word",
"application/vnd.ms-powerpoint",
"application/vnd.ms-excel",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/vnd.apple.pages",
"application/vnd.apple.numbers",
"application/vnd.apple.keynote",
"application/x-iwork-pages-sffpages",
"application/x-iwork-numbers-sffnumbers",
"application/x-iwork-keynote-sffkey"
];
/**
* The set of plain text MIME types that Evernote will parse and index
* for searching. The MIME types which start with "text/" will be handled
* separately by each client (i.e. hard-coded in each client).
*/
const set<string> EDAM_INDEXABLE_PLAINTEXT_MIME_TYPES = [
"application/x-sh",
"application/x-bsh",
"application/sql",
"application/x-sql"
];
/**
* The minimum length of a user search query string in Unicode chars
*/
const i32 EDAM_SEARCH_QUERY_LEN_MIN = 0;
/**
* The maximum length of a user search query string in Unicode chars
*/
const i32 EDAM_SEARCH_QUERY_LEN_MAX = 1024;
/**
* Search queries must match the provided pattern. This is used for
* both ad-hoc queries and SavedSearch.query fields.
* This excludes all control characters and line/paragraph separators.
*/
const string EDAM_SEARCH_QUERY_REGEX = "^[^\\p{Cc}\\p{Zl}\\p{Zp}]{0,1024}$";
/**
* The exact length of a MD5 hash checksum, in binary bytes.
* This is the exact length that must be matched for any binary hash
* value.
*/
const i32 EDAM_HASH_LEN = 16;
/**
* The minimum length of an Evernote username
*/
const i32 EDAM_USER_USERNAME_LEN_MIN = 1;
/**
* The maximum length of an Evernote username
*/
const i32 EDAM_USER_USERNAME_LEN_MAX = 64;
/**
* Any Evernote User.username field must match this pattern. This
* restricts usernames to a format that could permit use as a domain
* name component. E.g. "username.whatever.evernote.com"
*/
const string EDAM_USER_USERNAME_REGEX = "^[a-z0-9]([a-z0-9_-]{0,62}[a-z0-9])?$";
/**
* Minimum length of the User.name field
*/
const i32 EDAM_USER_NAME_LEN_MIN = 1;
/**
* Maximum length of the User.name field
*/
const i32 EDAM_USER_NAME_LEN_MAX = 255;
/**
* The User.name field must match this pattern, which excludes line
* endings and control characters.
*/
const string EDAM_USER_NAME_REGEX = "^[^\\p{Cc}\\p{Zl}\\p{Zp}]{1,255}$";
/**
* The minimum length of a Tag.name, in Unicode characters
*/
const i32 EDAM_TAG_NAME_LEN_MIN = 1;
/**
* The maximum length of a Tag.name, in Unicode characters
*/
const i32 EDAM_TAG_NAME_LEN_MAX = 100;
/**
* All Tag.name fields must match this pattern.
* This excludes control chars, commas or line/paragraph separators.
* The string may not begin or end with whitespace.
*/
const string EDAM_TAG_NAME_REGEX =
"^[^,\\p{Cc}\\p{Z}]([^,\\p{Cc}\\p{Zl}\\p{Zp}]{0,98}[^,\\p{Cc}\\p{Z}])?$";
/**
* The minimum length of a Note.title, in Unicode characters
*/
const i32 EDAM_NOTE_TITLE_LEN_MIN = 1;
/**
* The maximum length of a Note.title, in Unicode characters
*/
const i32 EDAM_NOTE_TITLE_LEN_MAX = 255;
/**
* All Note.title fields must match this pattern.
* This excludes control chars or line/paragraph separators.
* The string may not begin or end with whitespace.
*/
const string EDAM_NOTE_TITLE_REGEX =
"^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,253}[^\\p{Cc}\\p{Z}])?$";
/**
* Minimum length of a Note.content field.
* Note.content fields must comply with the ENML DTD.
*/
const i32 EDAM_NOTE_CONTENT_LEN_MIN = 0;
/**
* Maximum length of a Note.content field
* Note.content fields must comply with the ENML DTD.
*/
const i32 EDAM_NOTE_CONTENT_LEN_MAX = 5242880;
/**
* Minimum length of an application name, which is the key in an
* applicationData LazyMap found in entities such as Resources and
* Notes.
*/
const i32 EDAM_APPLICATIONDATA_NAME_LEN_MIN = 3;
/**
* Maximum length of an application name, which is the key in an
* applicationData LazyMap found in entities such as Resources and
* Notes.
*/
const i32 EDAM_APPLICATIONDATA_NAME_LEN_MAX = 32;
/**
* Minimum length of an applicationData value in a LazyMap, found
* in entities such as Resources and Notes.
*/
const i32 EDAM_APPLICATIONDATA_VALUE_LEN_MIN = 0;
/**
* Maximum length of an applicationData value in a LazyMap, found
* in entities such as Resources and Notes. Note, however, that
* the sum of the size of hte key and value is constrained by
* EDAM_APPLICATIONDATA_ENTRY_LEN_MAX, so the maximum length, in
* practice, depends upon the key value being used.
*/
const i32 EDAM_APPLICATIONDATA_VALUE_LEN_MAX = 4092;
/**
* The total length of an entry in an applicationData LazyMap, which
* is the sum of the length of the key and the value for the entry.
*/
const i32 EDAM_APPLICATIONDATA_ENTRY_LEN_MAX = 4095;
/**
* An application name must match this regex. An application
* name is the key portion of an entry in an applicationData
* map as found in entities such as Resources and Notes.
* Note that even if both the name and value regexes match,
* it is still necessary to check the sum of the lengths
* against EDAM_APPLICATIONDATA_ENTRY_LEN_MAX.
*/
const string EDAM_APPLICATIONDATA_NAME_REGEX = "^[A-Za-z0-9_.-]{3,32}$";
/**
* An applicationData map value must match this regex.
* Note that even if both the name and value regexes match,
* it is still necessary to check the sum of the lengths
* against EDAM_APPLICATIONDATA_ENTRY_LEN_MAX.
*/
const string EDAM_APPLICATIONDATA_VALUE_REGEX = "^[\\p{Space}[^\\p{Cc}]]{0,4092}$";
/**
* The minimum length of a Notebook.name, in Unicode characters
*/
const i32 EDAM_NOTEBOOK_NAME_LEN_MIN = 1;
/**
* The maximum length of a Notebook.name, in Unicode characters
*/
const i32 EDAM_NOTEBOOK_NAME_LEN_MAX = 100;
/**
* All Notebook.name fields must match this pattern.
* This excludes control chars or line/paragraph separators.
* The string may not begin or end with whitespace.
*/
const string EDAM_NOTEBOOK_NAME_REGEX =
"^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,98}[^\\p{Cc}\\p{Z}])?$";
/**
* The minimum length of a Notebook.stack, in Unicode characters
*/
const i32 EDAM_NOTEBOOK_STACK_LEN_MIN = 1;
/**
* The maximum length of a Notebook.stack, in Unicode characters
*/
const i32 EDAM_NOTEBOOK_STACK_LEN_MAX = 100;
/**
* All Notebook.stack fields must match this pattern.
* This excludes control chars or line/paragraph separators.
* The string may not begin or end with whitespace.
*/
const string EDAM_NOTEBOOK_STACK_REGEX =
"^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,98}[^\\p{Cc}\\p{Z}])?$";
/**
* The minimum length of a Workspace.name, in Unicode characters
*/
const i32 EDAM_WORKSPACE_NAME_LEN_MIN = 1;
/**
* The maximum length of a Workspace.name, in Unicode characters
*/
const i32 EDAM_WORKSPACE_NAME_LEN_MAX = 100;
/**
* The maximum length of a Workspace.description, in Unicode characters
*/
const i32 EDAM_WORKSPACE_DESCRIPTION_LEN_MAX = 600;
/**
* All Workspace.name fields must match this pattern.
* This excludes control chars or line/paragraph separators.
* The string may not begin or end with whitespace.
*/
const string EDAM_WORKSPACE_NAME_REGEX =
"^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,98}[^\\p{Cc}\\p{Z}])?$";
/**
* The minimum length of a public notebook URI component
*/
const i32 EDAM_PUBLISHING_URI_LEN_MIN = 1;
/**
* The maximum length of a public notebook URI component
*/
const i32 EDAM_PUBLISHING_URI_LEN_MAX = 255;
/**
* A public notebook URI component must match the provided pattern
*/
const string EDAM_PUBLISHING_URI_REGEX = "^[a-zA-Z0-9.~_+-]{1,255}$";
/**
* The set of strings that may not be used as a publishing URI
*/
const set<string> EDAM_PUBLISHING_URI_PROHIBITED = [ ".", ".." ];
/**
* The minimum length of a Publishing.publicDescription field.
*/
const i32 EDAM_PUBLISHING_DESCRIPTION_LEN_MIN = 1;
/**
* The maximum length of a Publishing.publicDescription field.
*/
const i32 EDAM_PUBLISHING_DESCRIPTION_LEN_MAX = 200;
/**
* Any public notebook's Publishing.publicDescription field must match
* this pattern.
* No control chars or line/paragraph separators, and can't start or
* end with whitespace.
*/
const string EDAM_PUBLISHING_DESCRIPTION_REGEX =
"^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,198}[^\\p{Cc}\\p{Z}])?$";
/**
* The minimum length of a SavedSearch.name field
*/
const i32 EDAM_SAVED_SEARCH_NAME_LEN_MIN = 1;
/**
* The maximum length of a SavedSearch.name field
*/
const i32 EDAM_SAVED_SEARCH_NAME_LEN_MAX = 100;
/**
* SavedSearch.name fields must match this pattern.
* No control chars or line/paragraph separators, and can't start or
* end with whitespace.
*/
const string EDAM_SAVED_SEARCH_NAME_REGEX =
"^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,98}[^\\p{Cc}\\p{Z}])?$";
/**
* The minimum length of an Evernote user password
*/
const i32 EDAM_USER_PASSWORD_LEN_MIN = 6;
/**
* The maximum length of an Evernote user password
*/
const i32 EDAM_USER_PASSWORD_LEN_MAX = 64;
/**
* Evernote user passwords must match this regular expression
*/
const string EDAM_USER_PASSWORD_REGEX =
"^[A-Za-z0-9!#$%&'()*+,./:;<=>?@^_`{|}~\\[\\]\\\\-]{6,64}$";
/**
* The maximum length of an Evernote Business URI
*/
const i32 EDAM_BUSINESS_URI_LEN_MAX = 32;
/**
* Valid Evernote Business marketing code / affiliate code format.
*/
const string EDAM_BUSINESS_MARKETING_CODE_REGEX_PATTERN = "[A-Za-z0-9-]{1,128}";
// ==================== data model collection limits ===========================
/**
* The maximum number of Tags per Note
*/
const i32 EDAM_NOTE_TAGS_MAX = 100;
/**
* The maximum number of Resources per Note
*/
const i32 EDAM_NOTE_RESOURCES_MAX = 1000;
/**
* Maximum number of Tags per account
*/
const i32 EDAM_USER_TAGS_MAX = 100000;
/**
* Maximum number of Tags per business account.
*/
const i32 EDAM_BUSINESS_TAGS_MAX = 100000;
/**
* Maximum number of SavedSearches per account
*/
const i32 EDAM_USER_SAVED_SEARCHES_MAX = 100;
/**
* Maximum number of Notes per user
*/
const i32 EDAM_USER_NOTES_MAX = 100000;
/**
* Maximum number of Notes per business account
*/
const i32 EDAM_BUSINESS_NOTES_MAX = 500000;
/**
* Maximum number of Notebooks per user
*/
const i32 EDAM_USER_NOTEBOOKS_MAX = 250;
/**
* Maximum number of Workspaces per user
*/
const i32 EDAM_USER_WORKSPACES_MAX = 0;
/**
* Maximum number of Notebooks in a business account
*/
const i32 EDAM_BUSINESS_NOTEBOOKS_MAX = 10000;
/**
* Maximum number of Workspaces in a business account
*/
const i32 EDAM_BUSINESS_WORKSPACES_MAX = 1000;
/**
* Maximum number of recent email addresses that are maintained
* (see UserAttributes.recentMailedAddresses)
*/
const i32 EDAM_USER_RECENT_MAILED_ADDRESSES_MAX = 10;
/**
* The number of emails of any type that can be sent by a user with a Free
* account from the service per day. If an email is sent to two different
* recipients, this counts as two emails.
*/
const i32 EDAM_USER_MAIL_LIMIT_DAILY_FREE = 50;
/**
* The number of emails of any type that can be sent by a user with a Premium
* account from the service per day. If an email is sent to two different
* recipients, this counts as two emails.
*/
const i32 EDAM_USER_MAIL_LIMIT_DAILY_PREMIUM = 200;
/**
* The number of bytes of new data that may be uploaded to a Free user's
* account each month.
*/
const i64 EDAM_USER_UPLOAD_LIMIT_FREE = 62914560;
/**
* The number of bytes of new data that may be uploaded to a Premium user's
* account each month.
*/
const i64 EDAM_USER_UPLOAD_LIMIT_PREMIUM = 10737418240;
/**
* The number of bytes of new data that may be uploaded to new business
* account during the first month. 50GB.
*/
const i64 EDAM_USER_UPLOAD_LIMIT_BUSINESS_FIRST_MONTH = 53687091200;
/**
* The number of bytes of new data that may be uploaded to a business
* account for the next month. 20GB.
*/
const i64 EDAM_USER_UPLOAD_LIMIT_BUSINESS_NEXT_MONTH = 21474836480;
/**
* The number of bytes of new data that may be uploaded each month to an account at
* a Plus service level.
*/
const i64 EDAM_USER_UPLOAD_LIMIT_PLUS = 1073741824;
/**
* The number of bytes of new data uploaded in a monthly quota cycle at which point
* users should be prompted with a survey to gather information on how they are using
* Evernote.
*/
const i64 EDAM_USER_UPLOAD_SURVEY_THRESHOLD = 5368709120;
/**
* The number of bytes of new data that may be uploaded to a Business user's
* personal account each month. Note that content uploaded into the Business
* notebooks by the user does not count against this limit.
*/
const i64 EDAM_USER_UPLOAD_LIMIT_BUSINESS = 10737418240;
/**
* The number of bytes of new data that may be uploaded to a Business for each
* member of the business per month. The total bytes available can be determined
* by multiplying this with the number of business users.
*/
const i64 EDAM_USER_UPLOAD_LIMIT_BUSINESS_PER_USER = 2147483647;
/**
* Maximum total size of a Note that can be added to a Free account.
* The size of a note is calculated as:
* ENML content length (in Unicode characters) plus the sum of all resource
* sizes (in bytes).
*/
const i32 EDAM_NOTE_SIZE_MAX_FREE = 26214400;
/**
* Maximum total size of a Note that can be added to a Premium account.
* The size of a note is calculated as:
* ENML content length (in Unicode characters) plus the sum of all resource
* sizes (in bytes).
*/
const i32 EDAM_NOTE_SIZE_MAX_PREMIUM = 209715200;
/**
* Maximum size of a resource, in bytes, for Free accounts
*/
const i32 EDAM_RESOURCE_SIZE_MAX_FREE = 26214400;
/**
* Maximum size of a resource, in bytes, for Premium accounts
*/
const i32 EDAM_RESOURCE_SIZE_MAX_PREMIUM = 209715200;
/**
* Maximum number of linked notebooks per account, for a free
* account.
*/
const i32 EDAM_USER_LINKED_NOTEBOOK_MAX = 100;
/**
* Maximum number of linked notebooks per account, for a premium
* account. Users who are part of an active business are also
* covered under "premium".
*/
const i32 EDAM_USER_LINKED_NOTEBOOK_MAX_PREMIUM = 500;
/**
* Maximum number of shared notebooks per business notebook
*/
const i32 EDAM_NOTEBOOK_BUSINESS_SHARED_NOTEBOOK_MAX = 5000;
/**
* Maximum number of shared notebooks per personal notebook
*/
const i32 EDAM_NOTEBOOK_PERSONAL_SHARED_NOTEBOOK_MAX = 500;
/**
* Maximum number of SharedNote records per business note
*/
const i32 EDAM_NOTE_BUSINESS_SHARED_NOTE_MAX = 1000;
/**
* Maximum number of SharedNote records per personal note
*/
const i32 EDAM_NOTE_PERSONAL_SHARED_NOTE_MAX = 100;
/**
* The minimum length of the content class attribute of a note.
*/
const i32 EDAM_NOTE_CONTENT_CLASS_LEN_MIN = 3;
/**
* The maximum length of the content class attribute of a note.
*/
const i32 EDAM_NOTE_CONTENT_CLASS_LEN_MAX = 32;
/**
* The regular expression that the content class of a note must match
* to be valid.
*/
const string EDAM_NOTE_CONTENT_CLASS_REGEX = "^[A-Za-z0-9_.-]{3,32}$";
/**
* The content class prefix used for all notes created by Evernote Hello.
* This prefix can be used to assemble individual content class strings,
* or can be used to create a wildcard search to get all notes created by
* Hello. When performing a wildcard search via filtered sync chunks or
* search strings, the * character must be appended to this constant.
*/
const string EDAM_HELLO_APP_CONTENT_CLASS_PREFIX = "evernote.hello.";
/**
* The content class prefix used for all notes created by Evernote Food.
* This prefix can be used to assemble individual content class strings,
* or can be used to create a wildcard search to get all notes created by
* Food. When performing a wildcard search via filtered sync chunks or
* search strings, the * character must be appended to this constant.
*/
const string EDAM_FOOD_APP_CONTENT_CLASS_PREFIX = "evernote.food.";
/**
* The content class prefix used for structured notes created by Evernote
* Hello that represents an encounter with a person. When performing a
* wildcard search via filtered sync chunks or search strings, the *
* character must be appended to this constant.
*/
const string EDAM_CONTENT_CLASS_HELLO_ENCOUNTER = "evernote.hello.encounter";
/**
* The content class prefix used for structured notes created by Evernote
* Hello that represents the user's profile. When performing a
* wildcard search via filtered sync chunks or search strings, the *
* character must be appended to this constant.
*/
const string EDAM_CONTENT_CLASS_HELLO_PROFILE = "evernote.hello.profile";
/**
* The content class prefix used for structured notes created by
* Evernote Food that captures the experience of a particular meal.
* When performing a wildcard search via filtered sync chunks or search
* strings, the * character must be appended to this constant.
*/
const string EDAM_CONTENT_CLASS_FOOD_MEAL = "evernote.food.meal";
/**
* The content class prefix used for structured notes created by Evernote
* Skitch. When performing a wildcard search via filtered sync chunks
* or search strings, the * character must be appended to this constant.
*/
const string EDAM_CONTENT_CLASS_SKITCH_PREFIX = "evernote.skitch";
/**
* The content class value used for structured image notes created by Evernote
* Skitch.
*/
const string EDAM_CONTENT_CLASS_SKITCH = "evernote.skitch";
/**
* The content class value used for structured PDF notes created by Evernote
* Skitch.
*/
const string EDAM_CONTENT_CLASS_SKITCH_PDF = "evernote.skitch.pdf";
/**
* The content class prefix used for structured notes created by Evernote
* Penultimate. When performing a wildcard search via filtered sync chunks
* or search strings, the * character must be appended to this constant.
*/
const string EDAM_CONTENT_CLASS_PENULTIMATE_PREFIX = "evernote.penultimate.";
/**
* The content class value used for structured notes created by Evernote
* Penultimate that represents a Penultimate notebook.
*/
const string EDAM_CONTENT_CLASS_PENULTIMATE_NOTEBOOK = "evernote.penultimate.notebook";
/**
* The NoteAttributes.sourceApplication value used for notes captured by the Post-it
* camera.
*/
const string EDAM_SOURCE_APPLICATION_POSTIT = "postit";
/**
* The NoteAttributes.sourceApplication value used for notes captured by the Moleskine
* page camera.
*/
const string EDAM_SOURCE_APPLICATION_MOLESKINE = "moleskine";
/**
* The NoteAttributes.sourceApplication value used for notes captured by
* PFU ScanSnap Evernote Edition.
*/
const string EDAM_SOURCE_APPLICATION_EN_SCANSNAP = "scanner.scansnap.evernote";
/**
* The NoteAttributes.sourceApplication value used for notes captured with the Embedded
* Web Clipper.
*/
const string EDAM_SOURCE_APPLICATION_EWC = "clipncite.web";
/**
* The NoteAttributes.sourceApplication value used for notes captured with the Android
* share extension.
*/
const string EDAM_SOURCE_APPLICATION_ANDROID_SHARE_EXTENSION = "android.clipper.evernote";
/**
* The NoteAttributes.sourceApplication value used for notes captured with the iOS share
* extension.
*/
const string EDAM_SOURCE_APPLICATION_IOS_SHARE_EXTENSION = "ios.clipper.evernote";
/**
* The NoteAttributes.sourceApplication value used for notes captured with the Evernote
* Web Clipper.
*/
const string EDAM_SOURCE_APPLICATION_WEB_CLIPPER = "webclipper.evernote";
/**
* The NoteAttributes.source value used for notes captured by the Microsoft Outlook clipper.
*/
const string EDAM_SOURCE_OUTLOOK_CLIPPER = "app.ms.outlook";
/**
* A NoteAttributes.noteTitleQuality value indicating that a note has no meaningful title,
* only a placeholder value such as "Untitled Note".
*/
const i32 EDAM_NOTE_TITLE_QUALITY_UNTITLED = 0;
/**
* A NoteAttributes.noteTitleQuality value indicating that the quality of an automatically
* generated note title is low. Examples of low quality titles include those based on a
* note's type and location, such as "Snapshot from 123 Sesame Street in New York".
*/
const i32 EDAM_NOTE_TITLE_QUALITY_LOW = 1;
/**
* A NoteAttributes.noteTitleQuality value indicating that the quality of an automatically
* generated note title is medium. Examples of medium quality titles include those based on a
* calendar entry, such as "Note from Weekly Staff Meeting".
*/
const i32 EDAM_NOTE_TITLE_QUALITY_MEDIUM = 2;
/**
* A NoteAttributes.noteTitleQuality value indicating that the quality of an automatically
* generated note title is high. Examples of high quality titles include those based on a
* scanned business card, such as "John Doe - Scanned Business Card".
*/
const i32 EDAM_NOTE_TITLE_QUALITY_HIGH = 3;
/**
* The minimum length of the plain text in a findRelated query, assuming that
* plaintext is being provided.
*/
const i32 EDAM_RELATED_PLAINTEXT_LEN_MIN = 1;
/**
* The maximum length of the plain text in a findRelated query, assuming that
* plaintext is being provided.
*/
const i32 EDAM_RELATED_PLAINTEXT_LEN_MAX = 131072;
/**
* The maximum number of notes that will be returned from a findRelated()
* query.
*/
const i32 EDAM_RELATED_MAX_NOTES = 25;
/**
* The maximum number of notebooks that will be returned from a findRelated()
* query.
*/
const i32 EDAM_RELATED_MAX_NOTEBOOKS = 1;
/**
* The maximum number of tags that will be returned from a findRelated() query.
*/
const i32 EDAM_RELATED_MAX_TAGS = 25;
/**
* The maximum number of experts that will be returned from a findRelated() query
*/
const i32 EDAM_RELATED_MAX_EXPERTS = 10;
/**
* The maximum number of related content snippets that will be returned from a
* findRelated() query.
*/
const i32 EDAM_RELATED_MAX_RELATED_CONTENT = 10;
/**
* The minimum length, in Unicode characters, of a description for a business
* notebook.
*/
const i32 EDAM_BUSINESS_NOTEBOOK_DESCRIPTION_LEN_MIN = 1;
/**
* The maximum length, in Unicode characters, of a description for a business
* notebook.
*/
const i32 EDAM_BUSINESS_NOTEBOOK_DESCRIPTION_LEN_MAX = 200;
/**
* All business notebook descriptions must match this pattern.
* This excludes control chars or line/paragraph separators.
* The string may not begin or end with whitespace.
*/
const string EDAM_BUSINESS_NOTEBOOK_DESCRIPTION_REGEX =
"^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,198}[^\\p{Cc}\\p{Z}])?$";
/**
* The maximum length of a business phone number.
*/
const i32 EDAM_BUSINESS_PHONE_NUMBER_LEN_MAX = 20;
/**
* Minimum length of a preference name
*/
const i32 EDAM_PREFERENCE_NAME_LEN_MIN = 3;
/**
* Maximum length of a preference name
*/
const i32 EDAM_PREFERENCE_NAME_LEN_MAX = 32;
/**
* Minimum length of a preference value
*/
const i32 EDAM_PREFERENCE_VALUE_LEN_MIN = 1;
/**
* Maximum length of a preference value
*/
const i32 EDAM_PREFERENCE_VALUE_LEN_MAX = 1024;
/**
* Maximum number of name/value pairs allowed
*/
const i32 EDAM_MAX_PREFERENCES = 100;
/**
* Maximum number of values per preference name when using
* values of size no greater than EDAM_PREFERENCE_VALUE_LEN_MAX.
*/
const i32 EDAM_MAX_VALUES_PER_PREFERENCE = 256;
/**
* The maximum length of a preference value if you only use one value
* per preference rather than up to EDAM_MAX_VALUES_PER_PREFERENCE.
* This option is useful if you want a single string that is larger
* than EDAM_PREFERENCE_VALUE_LEN_MAX and would otherwise need to
* split the string into multiple pieces to store it.
*/
const i32 EDAM_PREFERENCE_ONLY_ONE_VALUE_LEN_MAX = 16384;
/**
* A preference name must match this regex.
*/
const string EDAM_PREFERENCE_NAME_REGEX = "^[A-Za-z0-9_.-]{3,32}$";
/**
* A preference value must match this regex if you are using more
* than a single value for a preference.
*/
const string EDAM_PREFERENCE_VALUE_REGEX = "^[^\\p{Cc}]{1,1024}$";
/**
* A preference value must match this regex if you are using a single
* value for a preference.
*/
const string EDAM_PREFERENCE_ONLY_ONE_VALUE_REGEX = "^[^\\p{Cc}]{1,16384}$";
/**
* The name of the preferences entry that contains shortcuts.
*/
const string EDAM_PREFERENCE_SHORTCUTS = "evernote.shortcuts";
/**
* The name of the preferences entry that contains the notebook GUID (not the linked notebook) of
* the default business notebook. It must be in the format EDAM_GUID_REGEX.
* If a default business notebook is not set and the user is a business user
* the user should be prompted to set the default business notebook.
* The default business notebook must be a read/write notebook.
* Whenever the default business notebook guid is used, it must be revalidiated as a writable
* notebook. If it is not valid, the user should be re-prompted to set the value.
* This value is used by clients only.
*/
const string EDAM_PREFERENCE_BUSINESS_DEFAULT_NOTEBOOK = "evernote.business.notebook";
/**
* The name of the preferences entry that contains a boolean indicating that default
* quicknotes should go into a business notebook. The EDAM_PREFERENCE_BUSINESS_DEFAULT_NOTEBOOK
* must be set correctly for this preference to be honored.
* The quicknote preferences should only be set to "true", if quicknote should use a business
* notebook.
* Any value other than "true" (or the omission of a value) should be treated as "false".
* In this case, quicknotes should be created in in the user's personal default notebook.
* The interface should not allow users to set quicknote to a business notebook
* without a valid default business notebook selected, however, clients should handle the edge
* case of an invalid business notebook guid. If a user stops being a business user or
* does not have write access to any business notebooks the quicknote preference should be
* ignored.
*/
const string EDAM_PREFERENCE_BUSINESS_QUICKNOTE = "evernote.business.quicknote";
/**
* The maximum number of shortcuts that a user may have.
*/
const i32 EDAM_PREFERENCE_SHORTCUTS_MAX_VALUES = 250;
/**
* Maximum length of the device identifier string associated with long sessions.
*/
const i32 EDAM_DEVICE_ID_LEN_MAX = 32;
/**
* Regular expression for device identifier strings associated with long sessions.
*/
const string EDAM_DEVICE_ID_REGEX = "^[^\\p{Cc}]{1,32}$";
/**
* Maximum length of the device description string associated with long sessions.
*/
const i32 EDAM_DEVICE_DESCRIPTION_LEN_MAX = 64;
/**
* Regular expression for device description strings associated with long sessions.
*/
const string EDAM_DEVICE_DESCRIPTION_REGEX = "^[^\\p{Cc}]{1,64}$";
/**
* Maximum number of search suggestions that can be returned
*/
const i32 EDAM_SEARCH_SUGGESTIONS_MAX = 10;
/**
* Maximum length of the search suggestion prefix
*/
const i32 EDAM_SEARCH_SUGGESTIONS_PREFIX_LEN_MAX = 1024;
/**
* Minimum length of the search suggestion prefix
*/
const i32 EDAM_SEARCH_SUGGESTIONS_PREFIX_LEN_MIN = 2;
/**
* Default maximum number of results the service will return for findContact
*/
const i32 EDAM_FIND_CONTACT_DEFAULT_MAX_RESULTS = 100;
/**
* Absolute maximum number of results the service will return for findContact
*/
const i32 EDAM_FIND_CONTACT_MAX_RESULTS = 256;
/**
* The maximum number of separate notes that may be queried in a single call to
* NoteStore.getViewersForNotes.
*/
const i32 EDAM_NOTE_LOCK_VIEWERS_NOTES_MAX = 150;
/**
* Absolute maximum number of results the servce will return for PersistentInternalMarket.getOrders()
*/
const i32 EDAM_GET_ORDERS_MAX_RESULTS = 2000;
/**
* The maximum length of a message body in unicode characters.
*/
const i32 EDAM_MESSAGE_BODY_LEN_MAX = 2048;
/**
* The regex to validate message.body against
*/
const string EDAM_MESSAGE_BODY_REGEX = "^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,2046}[^\\p{Cc}\\p{Z}])?$";
/**
* The maximum number of recipients on a MessageThread.
*/
const i32 EDAM_MESSAGE_RECIPIENTS_MAX = 50;
/**
* The maximum number of attachments a Message can have.
*/
const i32 EDAM_MESSAGE_ATTACHMENTS_MAX = 100;
/**
* The maximum length of a message attachment title in unicode characters.
*/
const i32 EDAM_MESSAGE_ATTACHMENT_TITLE_LEN_MAX = 255;
/**
* The regex to validate message attachment titles against
*/
const string EDAM_MESSAGE_ATTACHMENT_TITLE_REGEX = "^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,253}[^\\p{Cc}\\p{Z}])?$";
/**
* The maximum length of a message attachment snippet in unicode characters.
*/
const i32 EDAM_MESSAGE_ATTACHMENT_SNIPPET_LEN_MAX = 2048;
/**
* The regex to validate message attachment snippets against
*/
const string EDAM_MESSAGE_ATTACHMENT_SNIPPET_REGEX = "^[^\\p{Cc}\\p{Z}]([\\n[^\\p{Cc}\\p{Zl}\\p{Zp}]]{0,2046}[^\\p{Cc}\\p{Z}])?$";
/**
* Maximum user profile photo size, in bytes, that clients may send to the service.
* Photos may be resized before being stored on the service.
*/
const i32 EDAM_USER_PROFILE_PHOTO_MAX_BYTES = 716800;
/**
* The maximum length of a promotion ID in unicode characters.
*/
const i32 EDAM_PROMOTION_ID_LEN_MAX = 32;
/**
* The regex to validate promotion IDs against.
*/
const string EDAM_PROMOTION_ID_REGEX = "^[A-Za-z0-9_.-]{1,32}$";
/** App Feedback Rating range */
const i16 EDAM_APP_RATING_MIN = 1;
const i16 EDAM_APP_RATING_MAX = 5;
/**
* The maximium number of note snippets you can retrieve in a single request
*/
const i32 EDAM_SNIPPETS_NOTES_MAX = 24;
/**
* The maximum number of connected identities a client can request.
*/
const i32 EDAM_CONNECTED_IDENTITY_REQUEST_MAX = 100;
/**
* Maximum length for OpenID token. There is no official enforced limit. The length of the Token ID depends
* on the provider. 1000 seems to be the safest value at this time.
*/
const i32 EDAM_OPEN_ID_ACCESS_TOKEN_MAX = 1000;