swagger: '2.0' info: title: Automile ClientApi ResourceOwnerQuote API version: v1 tags: - name: ResourceOwnerQuote paths: /v1/resourceowner/quotes: get: tags: - ResourceOwnerQuote summary: Retrieve a list of quotes and their containing attachments, items and notes description: If no time is set on the "to" parameter, then it's assumed all entries on the date should be included, and the time part will be set to 11:59:59 PM operationId: ResourceOwnerQuote_ListQuotes produces: - text/plain - application/json - text/json parameters: - in: query name: from description: Filter on Created to be on or after from date (default is 30 days prior to todays date) type: string format: date-time - in: query name: to description: Filter on Created to be on or after to date (default is todays date) type: string format: date-time - in: query name: quoteStatus description: Status on quote (Incomplete = 0, Created = 1, SentToCustomerForApproval = 2, Approved = 3, ConvertedToWorkOrder = 4, Declined = 5) (default is all) type: integer format: int32 enum: - 0 - 1 - 2 - 3 - 4 - 5 - in: query name: includeDeleted description: Include deleted quote (default is false) type: boolean default: false responses: '200': description: Successful request schema: type: array items: $ref: '#/definitions/QuoteModelGET' '500': description: Internal server error security: - oauth2: [] post: tags: - ResourceOwnerQuote summary: Create a new Quote operationId: ResourceOwnerQuote_CreateQuote consumes: - application/json - text/json - application/*+json parameters: - in: body name: body description: Quote model schema: $ref: '#/definitions/QuoteModelPOST' responses: '200': description: A link in the header is returned to the newly created quote. '500': description: Internal server error. '400': description: Bad request, could occur for various cases, see returned message. '403': description: Request is forbidden, could occur for various reasons, see returned message. security: - oauth2: [] put: tags: - ResourceOwnerQuote summary: Update or create one or many quotes description: "For quotes, items, attachments and notes with an id is updated. When id is not provided new objects is created. If an \r\n item, attachment or note is missing on an existing quote that item, attachment or note is removed." operationId: ResourceOwnerWorkOrder_SaveQuoteList consumes: - application/json - text/json - application/*+json produces: - text/plain - application/json - text/json parameters: - in: body name: body description: List of quotes schema: type: array items: $ref: '#/definitions/QuoteModelSyncPUT' responses: '200': description: Successful update schema: type: array items: $ref: '#/definitions/QuoteModelGET' '500': description: Internal server error. security: - oauth2: [] /v1/resourceowner/quotes/{quoteId}: get: tags: - ResourceOwnerQuote summary: Get a Quote operationId: ResourceOwnerQuote_GetQuote produces: - text/plain - application/json - text/json parameters: - in: path name: quoteId description: Quote Id required: true type: integer format: int32 responses: '200': description: Success schema: $ref: '#/definitions/QuoteModelGET' security: - oauth2: [] put: tags: - ResourceOwnerQuote summary: Updates a quote operationId: ResourceOwnerQuote_UpdateQuote consumes: - application/json - text/json - application/*+json produces: - text/plain - application/json - text/json parameters: - in: path name: quoteId description: Quote Id that needs to be udpated required: true type: integer format: int32 - in: body name: body description: Quote edit model schema: $ref: '#/definitions/QuoteModelPUT' responses: '200': description: Success schema: $ref: '#/definitions/HttpResponseMessage' security: - oauth2: [] delete: tags: - ResourceOwnerQuote summary: Soft deletes the Quote operationId: ResourceOwnerQuote_DeleteQuote parameters: - in: path name: quoteId description: Quote Id that needs to be deleted required: true type: integer format: int32 responses: '200': description: Success security: - oauth2: [] /v1/resourceowner/quotes/{quoteId}/status: put: tags: - ResourceOwnerQuote summary: Update status of a quote operationId: ResourceOwnerQuote_UpdateStatus consumes: - application/json - text/json - application/*+json parameters: - in: path name: quoteId description: The quote which the satus should be updated on required: true type: integer format: int32 - in: body name: body description: Quote status schema: $ref: '#/definitions/QuoteStatusModelPUT' responses: '200': description: Successful update '403': description: Forbidden access to resource '500': description: Internal server error security: - oauth2: [] /v1/resourceowner/quotes/referenceId: get: tags: - ResourceOwnerQuote summary: Get a new reference id for a quote (not unique) operationId: ResourceOwnerQuote_GetNextQuoteId produces: - text/plain - application/json - text/json responses: '200': description: Successful request schema: type: string '500': description: Internal server error security: - oauth2: [] definitions: TimeSpan: type: object properties: Ticks: format: int64 type: integer Days: format: int32 type: integer readOnly: true Hours: format: int32 type: integer readOnly: true Milliseconds: format: int32 type: integer readOnly: true Microseconds: format: int32 type: integer readOnly: true Nanoseconds: format: int32 type: integer readOnly: true Minutes: format: int32 type: integer readOnly: true Seconds: format: int32 type: integer readOnly: true TotalDays: format: double type: number readOnly: true TotalHours: format: double type: number readOnly: true TotalMilliseconds: format: double type: number readOnly: true TotalMicroseconds: format: double type: number readOnly: true TotalNanoseconds: format: double type: number readOnly: true TotalMinutes: format: double type: number readOnly: true TotalSeconds: format: double type: number readOnly: true additionalProperties: false QuoteAttachmentModelGET: required: - AttachmentType - URL type: object properties: URL: minLength: 1 type: string Description: type: string AttachmentType: format: int32 enum: - 0 - 1 - 2 type: integer QuoteAttachmentId: format: int32 type: integer CreatedByContactId: format: int32 type: integer Created: format: date-time type: string additionalProperties: false QuoteAttachmentModelPOST: required: - AttachmentType - URL type: object properties: URL: minLength: 1 type: string Description: type: string AttachmentType: format: int32 enum: - 0 - 1 - 2 type: integer additionalProperties: false QuoteNoteModelPOST: required: - Note type: object properties: Note: minLength: 1 type: string additionalProperties: false StringStringIEnumerableKeyValuePair: type: object properties: Key: type: string Value: type: array items: type: string additionalProperties: false PositionPointModel: type: object properties: Longitude: format: double type: number Latitude: format: double type: number additionalProperties: false QuoteStatusHistoryModelGET: type: object properties: OccuredAt: format: date-time type: string ContactId: format: int32 type: integer Status: format: int32 enum: - 0 - 1 - 2 - 3 - 4 - 5 type: integer additionalProperties: false CustomerJobAddressModel: type: object properties: Street: type: string Apartment: type: string CareOf: type: string ZipCode: type: string City: type: string StateOrProvince: type: string ISO3166CountryCode: type: string Position: $ref: '#/definitions/PositionPointModel' additionalProperties: false HttpContent: type: object properties: Headers: type: array items: $ref: '#/definitions/StringStringIEnumerableKeyValuePair' readOnly: true additionalProperties: false QuoteModelGET: required: - WorkOrderCustomerId type: object properties: JobDate: format: date-time type: string JobTime: $ref: '#/definitions/TimeSpan' EstimatedTimeInMinutes: format: int32 type: integer JobDescription: type: string ExternalId: type: string CustomerContactName: type: string CustomerEmail: type: string CustomerName: type: string CustomerCommunicationLanguageISO639_2: type: string CustomerPhoneNumber: type: string CustomerJobAddress: $ref: '#/definitions/CustomerJobAddressModel' CustomerBillingAddress: $ref: '#/definitions/CustomerBillingAddressModel' NotificationType: format: int32 enum: - 0 - 1 - 2 - 3 type: integer WorkOrderCategoryId: format: int32 type: integer CategoryName: type: string AssignedToContactId: format: int32 type: integer WorkOrderCustomerId: format: int32 type: integer EstimatedTotal: format: double type: number Status: format: int32 enum: - 0 - 1 - 2 - 3 - 4 - 5 type: integer QuoteId: format: int32 type: integer IsDeleted: type: boolean Created: format: date-time type: string RequestedByContactId: format: int32 type: integer StatusHistory: type: array items: $ref: '#/definitions/QuoteStatusHistoryModelGET' Notes: type: array items: $ref: '#/definitions/QuoteNoteModelGET' Items: type: array items: $ref: '#/definitions/QuoteItemModelGET' Attachments: type: array items: $ref: '#/definitions/QuoteAttachmentModelGET' additionalProperties: false QuoteItemModelPUT: required: - Quantity - WorkOrderArticleId type: object properties: Quantity: format: double type: number PricePerQuantityExclVAT: format: double type: number DiscountInPercentage: format: double type: number DiscountAmount: format: double type: number TaxRate: format: double type: number WorkOrderArticleId: format: int32 type: integer ArticleName: type: string UnitType: format: int32 enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 type: integer QuoteItemId: format: int32 type: integer additionalProperties: false QuoteModelPOST: required: - WorkOrderCustomerId type: object properties: JobDate: format: date-time type: string JobTime: $ref: '#/definitions/TimeSpan' EstimatedTimeInMinutes: format: int32 type: integer JobDescription: type: string ExternalId: type: string CustomerContactName: type: string CustomerEmail: type: string CustomerName: type: string CustomerCommunicationLanguageISO639_2: type: string CustomerPhoneNumber: type: string CustomerJobAddress: $ref: '#/definitions/CustomerJobAddressModel' CustomerBillingAddress: $ref: '#/definitions/CustomerBillingAddressModel' NotificationType: format: int32 enum: - 0 - 1 - 2 - 3 type: integer WorkOrderCategoryId: format: int32 type: integer CategoryName: type: string AssignedToContactId: format: int32 type: integer WorkOrderCustomerId: format: int32 type: integer EstimatedTotal: format: double type: number Status: format: int32 enum: - 0 - 1 - 2 - 3 - 4 - 5 type: integer Attachments: type: array items: $ref: '#/definitions/QuoteAttachmentModelPOST' Notes: type: array items: $ref: '#/definitions/QuoteNoteModelPOST' Items: type: array items: $ref: '#/definitions/QuoteItemModelPOST' additionalProperties: false QuoteAttachmentModelPUT: required: - AttachmentType - URL type: object properties: URL: minLength: 1 type: string Description: type: string AttachmentType: format: int32 enum: - 0 - 1 - 2 type: integer QuoteAttachmentId: format: int32 type: integer additionalProperties: false QuoteItemModelGET: required: - Quantity - WorkOrderArticleId type: object properties: Quantity: format: double type: number PricePerQuantityExclVAT: format: double type: number DiscountInPercentage: format: double type: number DiscountAmount: format: double type: number TaxRate: format: double type: number WorkOrderArticleId: format: int32 type: integer ArticleName: type: string UnitType: format: int32 enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 type: integer QuoteItemId: format: int32 type: integer ISO4217CurrencyCode: type: string Created: format: date-time type: string additionalProperties: false QuoteNoteModelPUT: required: - Note type: object properties: Note: minLength: 1 type: string QuoteNoteId: format: int32 type: integer additionalProperties: false HttpResponseMessage: type: object properties: Version: $ref: '#/definitions/Version' Content: $ref: '#/definitions/HttpContent' StatusCode: format: int32 enum: - 100 - 101 - 102 - 103 - 200 - 201 - 202 - 203 - 204 - 205 - 206 - 207 - 208 - 226 - 300 - 301 - 302 - 303 - 304 - 305 - 306 - 307 - 308 - 400 - 401 - 402 - 403 - 404 - 405 - 406 - 407 - 408 - 409 - 410 - 411 - 412 - 413 - 414 - 415 - 416 - 417 - 421 - 422 - 423 - 424 - 426 - 428 - 429 - 431 - 451 - 500 - 501 - 502 - 503 - 504 - 505 - 506 - 507 - 508 - 510 - 511 type: integer ReasonPhrase: type: string Headers: type: array items: $ref: '#/definitions/StringStringIEnumerableKeyValuePair' readOnly: true TrailingHeaders: type: array items: $ref: '#/definitions/StringStringIEnumerableKeyValuePair' readOnly: true RequestMessage: $ref: '#/definitions/HttpRequestMessage' IsSuccessStatusCode: type: boolean readOnly: true additionalProperties: false QuoteItemModelPOST: required: - Quantity - WorkOrderArticleId type: object properties: Quantity: format: double type: number PricePerQuantityExclVAT: format: double type: number DiscountInPercentage: format: double type: number DiscountAmount: format: double type: number TaxRate: format: double type: number WorkOrderArticleId: format: int32 type: integer ArticleName: type: string UnitType: format: int32 enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 type: integer additionalProperties: false QuoteModelSyncPUT: required: - WorkOrderCustomerId type: object properties: JobDate: format: date-time type: string JobTime: $ref: '#/definitions/TimeSpan' EstimatedTimeInMinutes: format: int32 type: integer JobDescription: type: string ExternalId: type: string CustomerContactName: type: string CustomerEmail: type: string CustomerName: type: string CustomerCommunicationLanguageISO639_2: type: string CustomerPhoneNumber: type: string CustomerJobAddress: $ref: '#/definitions/CustomerJobAddressModel' CustomerBillingAddress: $ref: '#/definitions/CustomerBillingAddressModel' NotificationType: format: int32 enum: - 0 - 1 - 2 - 3 type: integer WorkOrderCategoryId: format: int32 type: integer CategoryName: type: string AssignedToContactId: format: int32 type: integer WorkOrderCustomerId: format: int32 type: integer EstimatedTotal: format: double type: number Status: format: int32 enum: - 0 - 1 - 2 - 3 - 4 - 5 type: integer Attachments: type: array items: $ref: '#/definitions/QuoteAttachmentModelPUT' Notes: type: array items: $ref: '#/definitions/QuoteNoteModelPUT' Items: type: array items: $ref: '#/definitions/QuoteItemModelPUT' QuoteId: format: int32 type: integer additionalProperties: false CustomerBillingAddressModel: type: object properties: Street: type: string Apartment: type: string CareOf: type: string ZipCode: type: string City: type: string StateOrProvince: type: string ISO3166CountryCode: type: string Position: $ref: '#/definitions/PositionPointModel' additionalProperties: false HttpMethod: type: object properties: Method: type: string additionalProperties: false HttpRequestMessage: type: object properties: Version: $ref: '#/definitions/Version' VersionPolicy: format: int32 enum: - 0 - 1 - 2 type: integer Content: $ref: '#/definitions/HttpContent' Method: $ref: '#/definitions/HttpMethod' RequestUri: format: uri type: string Headers: type: array items: $ref: '#/definitions/StringStringIEnumerableKeyValuePair' readOnly: true Properties: type: object additionalProperties: {} readOnly: true Options: type: object additionalProperties: {} readOnly: true additionalProperties: false QuoteNoteModelGET: required: - Note type: object properties: Note: minLength: 1 type: string QuoteNoteId: format: int32 type: integer CreatedByContactId: format: int32 type: integer Created: format: date-time type: string additionalProperties: false QuoteModelPUT: required: - WorkOrderCustomerId type: object properties: JobDate: format: date-time type: string JobTime: $ref: '#/definitions/TimeSpan' EstimatedTimeInMinutes: format: int32 type: integer JobDescription: type: string ExternalId: type: string CustomerContactName: type: string CustomerEmail: type: string CustomerName: type: string CustomerCommunicationLanguageISO639_2: type: string CustomerPhoneNumber: type: string CustomerJobAddress: $ref: '#/definitions/CustomerJobAddressModel' CustomerBillingAddress: $ref: '#/definitions/CustomerBillingAddressModel' NotificationType: format: int32 enum: - 0 - 1 - 2 - 3 type: integer WorkOrderCategoryId: format: int32 type: integer CategoryName: type: string AssignedToContactId: format: int32 type: integer WorkOrderCustomerId: format: int32 type: integer EstimatedTotal: format: double type: number Status: format: int32 enum: - 0 - 1 - 2 - 3 - 4 - 5 type: integer Attachments: type: array items: $ref: '#/definitions/QuoteAttachmentModelPUT' Notes: type: array items: $ref: '#/definitions/QuoteNoteModelPUT' Items: type: array items: $ref: '#/definitions/QuoteItemModelPUT' additionalProperties: false QuoteStatusModelPUT: type: object properties: Status: format: int32 enum: - 0 - 1 - 2 - 3 - 4 - 5 type: integer additionalProperties: false Version: type: object properties: Major: format: int32 type: integer readOnly: true Minor: format: int32 type: integer readOnly: true Build: format: int32 type: integer readOnly: true Revision: format: int32 type: integer readOnly: true MajorRevision: format: int32 type: integer readOnly: true MinorRevision: format: int32 type: integer readOnly: true additionalProperties: false securityDefinitions: oauth2: type: oauth2 flow: implicit authorizationUrl: https://api.automile.com/login/ scopes: read: Read access to protected resources write: Write access to protected resources description: OAuth2 Implicit Grant