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:
"""Constants of http methods.
"""
Get = 'GET'
Post = 'POST'
Put = 'PUT'
Delete = 'DELETE'
Head = 'HEAD'
Options = 'OPTIONS'
[docs]class HttpHeaders:
"""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'
# 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:
"""Constants of http header preference tokens.
"""
PreferUnfilteredQueryResponse = 'PreferUnfilteredQueryResponse'
[docs]class HttpStatusDescriptions:
"""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:
"""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 Versions:
"""Constants of versions.
"""
CurrentVersion = '2018-09-17'
SDKName = 'azure-cosmos'
SDKVersion = '3.1.1'
[docs]class Delimiters:
"""Constants of delimiters.
"""
ClientContinuationDelimiter = '!!'
ClientContinuationFormat = '{0}!!{1}'
[docs]class HttpListenerErrorCodes:
"""Constants of http listener error codes.
"""
ERROR_OPERATION_ABORTED = 995
ERROR_CONNECTION_INVALID = 1229
[docs]class HttpContextProperties:
"""Constants of http context properties.
"""
SubscriptionId = 'SubscriptionId'
class _ErrorCodes:
"""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:
"""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:
"""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:
"""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 == ResourceType.Document or
resourceType == ResourceType.Attachment or
resourceType == ResourceType.Conflict or
resourceType == ResourceType.Schema or
resourceType == ResourceType.UserDefinedFunction or
resourceType == ResourceType.Trigger or
resourceType == ResourceType.StoredProcedure)