Source code for azure.cosmos.http_constants

# The MIT License (MIT)
# Copyright (c) 2014 Microsoft Corporation

# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

"""HTTP Constants in the Azure Cosmos database service.
"""


[docs]class HttpMethods(object): """Constants of http methods. """ Get = "GET" Post = "POST" Put = "PUT" Delete = "DELETE" Head = "HEAD" Options = "OPTIONS"
[docs]class HttpHeaders(object): """Constants of http headers. """ Authorization = "authorization" ETag = "etag" MethodOverride = "X-HTTP-Method" Slug = "Slug" ContentType = "Content-Type" LastModified = "Last-Modified" ContentEncoding = "Content-Encoding" CharacterSet = "CharacterSet" UserAgent = "User-Agent" IfModified_since = "If-Modified-Since" IfMatch = "If-Match" IfNoneMatch = "If-None-Match" ContentLength = "Content-Length" AcceptEncoding = "Accept-Encoding" KeepAlive = "Keep-Alive" CacheControl = "Cache-Control" TransferEncoding = "Transfer-Encoding" ContentLanguage = "Content-Language" ContentLocation = "Content-Location" ContentMd5 = "Content-Md5" ContentRange = "Content-Range" Accept = "Accept" AcceptCharset = "Accept-Charset" AcceptLanguage = "Accept-Language" IfRange = "If-Range" IfUnmodifiedSince = "If-Unmodified-Since" MaxForwards = "Max-Forwards" ProxyAuthorization = "Proxy-Authorization" AcceptRanges = "Accept-Ranges" ProxyAuthenticate = "Proxy-Authenticate" RetryAfter = "Retry-After" SetCookie = "Set-Cookie" WwwAuthenticate = "Www-Authenticate" Origin = "Origin" Host = "Host" AccessControlAllowOrigin = "Access-Control-Allow-Origin" AccessControlAllowHeaders = "Access-Control-Allow-Headers" KeyValueEncodingFormat = "application/x-www-form-urlencoded" WrapAssertionFormat = "wrap_assertion_format" WrapAssertion = "wrap_assertion" WrapScope = "wrap_scope" SimpleToken = "SWT" HttpDate = "date" Prefer = "Prefer" Location = "Location" Referer = "referer" # Query Query = "x-ms-documentdb-query" IsQuery = "x-ms-documentdb-isquery" IsQueryPlanRequest = "x-ms-cosmos-is-query-plan-request" SupportedQueryFeatures = "x-ms-cosmos-supported-query-features" QueryVersion = "x-ms-cosmos-query-version" # Our custom DocDB headers Continuation = "x-ms-continuation" PageSize = "x-ms-max-item-count" # Request sender generated. Simply echoed by backend. ActivityId = "x-ms-activity-id" PreTriggerInclude = "x-ms-documentdb-pre-trigger-include" PreTriggerExclude = "x-ms-documentdb-pre-trigger-exclude" PostTriggerInclude = "x-ms-documentdb-post-trigger-include" PostTriggerExclude = "x-ms-documentdb-post-trigger-exclude" IndexingDirective = "x-ms-indexing-directive" SessionToken = "x-ms-session-token" ConsistencyLevel = "x-ms-consistency-level" XDate = "x-ms-date" CollectionPartitionInfo = "x-ms-collection-partition-info" CollectionServiceInfo = "x-ms-collection-service-info" RetryAfterInMilliseconds = "x-ms-retry-after-ms" IsFeedUnfiltered = "x-ms-is-feed-unfiltered" ResourceTokenExpiry = "x-ms-documentdb-expiry-seconds" EnableScanInQuery = "x-ms-documentdb-query-enable-scan" EmitVerboseTracesInQuery = "x-ms-documentdb-query-emit-traces" SubStatus = "x-ms-substatus" AlternateContentPath = "x-ms-alt-content-path" IsContinuationExpected = "x-ms-documentdb-query-iscontinuationexpected" PopulateQueryMetrics = "x-ms-documentdb-populatequerymetrics" # Quota Info MaxEntityCount = "x-ms-root-entity-max-count" CurrentEntityCount = "x-ms-root-entity-current-count" CollectionQuotaInMb = "x-ms-collection-quota-mb" CollectionCurrentUsageInMb = "x-ms-collection-usage-mb" MaxMediaStorageUsageInMB = "x-ms-max-media-storage-usage-mb" # Collection quota PopulateQuotaInfo = "x-ms-documentdb-populatequotainfo" PopulatePartitionKeyRangeStatistics = "x-ms-documentdb-populatepartitionstatistics" # Usage Info CurrentMediaStorageUsageInMB = "x-ms-media-storage-usage-mb" RequestCharge = "x-ms-request-charge" # Address related headers. ForceRefresh = "x-ms-force-refresh" ItemCount = "x-ms-item-count" NewResourceId = "x-ms-new-resource-id" UseMasterCollectionResolver = "x-ms-use-master-collection-resolver" # Admin Headers FullUpgrade = "x-ms-force-full-upgrade" OnlyUpgradeSystemApplications = "x-ms-only-upgrade-system-applications" OnlyUpgradeNonSystemApplications = "x-ms-only-upgrade-non-system-applications" UpgradeFabricRingCodeAndConfig = "x-ms-upgrade-fabric-code-config" IgnoreInProgressUpgrade = "x-ms-ignore-inprogress-upgrade" UpgradeVerificationKind = "x-ms-upgrade-verification-kind" IsCanary = "x-ms-iscanary" # Version headers and values Version = "x-ms-version" # RDFE Resource Provider headers OcpResourceProviderRegisteredUri = "ocp-resourceprovider-registered-uri" # For Document service management operations only. This is in # essence a 'handle' to (long running) operations. RequestId = "x-ms-request-id" # Object returning this determines what constitutes state and what # last state change means. For replica, it is the last role change. LastStateChangeUtc = "x-ms-last-state-change-utc" # Offer type. OfferType = "x-ms-offer-type" OfferThroughput = "x-ms-offer-throughput" # Custom RUs/minute headers DisableRUPerMinuteUsage = "x-ms-documentdb-disable-ru-per-minute-usage" IsRUPerMinuteUsed = "x-ms-documentdb-is-ru-per-minute-used" OfferIsRUPerMinuteThroughputEnabled = "x-ms-offer-is-ru-per-minute-throughput-enabled" # Partitioned collection headers PartitionKey = "x-ms-documentdb-partitionkey" EnableCrossPartitionQuery = "x-ms-documentdb-query-enablecrosspartition" PartitionKeyRangeID = "x-ms-documentdb-partitionkeyrangeid" # Upsert header IsUpsert = "x-ms-documentdb-is-upsert" # Index progress headers. IndexTransformationProgress = "x-ms-documentdb-collection-index-transformation-progress" LazyIndexingProgress = "x-ms-documentdb-collection-lazy-indexing-progress" # Client generated retry count response header ThrottleRetryCount = "x-ms-throttle-retry-count" ThrottleRetryWaitTimeInMs = "x-ms-throttle-retry-wait-time-ms" # StoredProcedure related headers EnableScriptLogging = "x-ms-documentdb-script-enable-logging" ScriptLogResults = "x-ms-documentdb-script-log-results" # Change feed AIM = "A-IM" IncrementalFeedHeaderValue = "Incremental feed" # For Using Multiple Write Locations AllowTentativeWrites = "x-ms-cosmos-allow-tentative-writes"
[docs]class HttpHeaderPreferenceTokens(object): """Constants of http header preference tokens. """ PreferUnfilteredQueryResponse = "PreferUnfilteredQueryResponse"
[docs]class HttpStatusDescriptions(object): """Constants of http status descriptions. """ Accepted = "Accepted" Conflict = "Conflict" OK = "Ok" PreconditionFailed = "Precondition Failed" NotModified = "Not Modified" NotFound = "Not Found" BadGateway = "Bad Gateway" BadRequest = "Bad Request" InternalServerError = "Internal Server Error" MethodNotAllowed = "MethodNotAllowed" NotAcceptable = "Not Acceptable" NoContent = "No Content" Created = "Created" UnsupportedMediaType = "Unsupported Media Type" LengthRequired = "Length Required" ServiceUnavailable = "Service Unavailable" RequestEntityTooLarge = "Request Entity Too Large" Unauthorized = "Unauthorized" Forbidden = "Forbidden" Gone = "Gone" RequestTimeout = "Request timed out" GatewayTimeout = "Gateway timed out" TooManyRequests = "Too Many Requests" RetryWith = "Retry the request"
[docs]class QueryStrings(object): """Constants of query strings. """ Filter = "$filter" GenerateId = "$generateFor" GenerateIdBatchSize = "$batchSize" GetChildResourcePartitions = "$getChildResourcePartitions" Url = "$resolveFor" RootIndex = "$rootIndex" Query = "query" SQLQueryType = "sql" # RDFE Resource Provider query strings ContentView = "contentview" Generic = "generic"
[docs]class CookieHeaders(object): """Constants of cookie headers. """ SessionToken = "x-ms-session-token"
[docs]class Versions(object): """Constants of versions. """ CurrentVersion = "2018-12-31" SDKName = "azure-cosmos" QueryVersion = "1.0"
[docs]class Delimiters(object): """Constants of delimiters. """ ClientContinuationDelimiter = "!!" ClientContinuationFormat = "{0}!!{1}"
[docs]class HttpListenerErrorCodes(object): """Constants of http listener error codes. """ ERROR_OPERATION_ABORTED = 995 ERROR_CONNECTION_INVALID = 1229
[docs]class HttpContextProperties(object): """Constants of http context properties. """ SubscriptionId = "SubscriptionId"
class _ErrorCodes(object): """Windows Socket Error Codes """ WindowsInterruptedFunctionCall = 10004 WindowsFileHandleNotValid = 10009 WindowsPermissionDenied = 10013 WindowsBadAddress = 10014 WindowsInvalidArgumnet = 10022 WindowsResourceTemporarilyUnavailable = 10035 WindowsOperationNowInProgress = 10036 WindowsAddressAlreadyInUse = 10048 WindowsConnectionResetByPeer = 10054 WindowsCannotSendAfterSocketShutdown = 10058 WindowsConnectionTimedOut = 10060 WindowsConnectionRefused = 10061 WindowsNameTooLong = 10063 WindowsHostIsDown = 10064 WindowsNoRouteTohost = 10065 """Linux Error Codes """ LinuxConnectionReset = 131
[docs]class StatusCodes(object): """HTTP status codes returned by the REST operations """ # Success OK = 200 CREATED = 201 ACCEPTED = 202 NO_CONTENT = 204 NOT_MODIFIED = 304 # Client Error BAD_REQUEST = 400 UNAUTHORIZED = 401 FORBIDDEN = 403 NOT_FOUND = 404 METHOD_NOT_ALLOWED = 405 REQUEST_TIMEOUT = 408 CONFLICT = 409 GONE = 410 PRECONDITION_FAILED = 412 REQUEST_ENTITY_TOO_LARGE = 413 TOO_MANY_REQUESTS = 429 RETRY_WITH = 449 INTERNAL_SERVER_ERROR = 500 SERVICE_UNAVAILABLE = 503 # Operation pause and cancel. These are FAKE status codes for QOS logging purpose only. OPERATION_PAUSED = 1200 OPERATION_CANCELLED = 1201
[docs]class SubStatusCodes(object): """Sub status codes returned by the REST operations specifying the details of the operation """ UNKNOWN = 0 # 400: Bad Request Substatus PARTITION_KEY_MISMATCH = 1001 CROSS_PARTITION_QUERY_NOT_SERVABLE = 1004 # 410: StatusCodeType_Gone: substatus NAME_CACHE_IS_STALE = 1000 PARTITION_KEY_RANGE_GONE = 1002 COMPLETING_SPLIT = 1007 COMPLETING_PARTITION_MIGRATION = 1008 # 403: Forbidden Substatus. WRITE_FORBIDDEN = 3 PROVISION_LIMIT_REACHED = 1005 DATABASE_ACCOUNT_NOT_FOUND = 1008 REDUNDANT_COLLECTION_PUT = 1009 SHARED_THROUGHPUT_DATABASE_QUOTA_EXCEEDED = 1010 SHARED_THROUGHPUT_OFFER_GROW_NOT_NEEDED = 1011 # 404: LSN in session token is higher READ_SESSION_NOTAVAILABLE = 1002 OWNER_RESOURCE_NOT_FOUND = 1003 # 409: Conflict exception CONFLICT_WITH_CONTROL_PLANE = 1006 # 503: Service Unavailable due to region being out of capacity for bindable partitions INSUFFICIENT_BINDABLE_PARTITIONS = 1007
[docs]class ResourceType(object): """Types of resources in Azure Cosmos """ Database = "dbs" Collection = "colls" User = "users" Document = "docs" Permission = "permissions" StoredProcedure = "sprocs" Trigger = "triggers" UserDefinedFunction = "udfs" Conflict = "conflicts" Attachment = "attachments" PartitionKeyRange = "pkranges" Schema = "schemas" Offer = "offers" Topology = "topology" DatabaseAccount = "databaseaccount" Media = "media"
[docs] @staticmethod def IsCollectionChild(resourceType): return resourceType in ( ResourceType.Document, ResourceType.Attachment, ResourceType.Conflict, ResourceType.Schema, ResourceType.UserDefinedFunction, ResourceType.Trigger, ResourceType.StoredProcedure, )