import { Coding } from './Coding.js';
import { Extension } from './Extension.js';
import { FhirPrimitive } from './FhirPrimitive.js';
import { TestScript_Setup_Action_Operation_RequestHeader } from './TestScript_Setup_Action_Operation_RequestHeader.js';
export interface TestScript_Setup_Action_Operation {
    /**
     * @description Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
     * @short Unique id for inter-element referencing
     */
    id?: string;
    /**
     * @description May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
     * @comment There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.
     * @short Additional content defined by implementations
     */
    extension?: Extension[];
    /**
     * @description May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained andor the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.
  
  Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).
     * @comment There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.
     * @short Extensions that cannot be ignored even if unrecognized
     */
    modifierExtension?: Extension[];
    /**
     * @description Server interaction or operation type.
     * @comment See the list of [server interactions](http.html).
     * @short The operation code type that will be executed
     */
    type?: Coding;
    /**
     * @description The type of the FHIR resource. See the [resource list](resourcelist.html). Data type of uri is needed when non-HL7 artifacts are identified.
     * @comment If "url" element is specified, then "targetId", "params", and "resource" elements will be ignored as "url" element will have everything needed for constructing the request url.  If "params" element is specified, then "targetId" element is ignored. For FHIR operations that require a resource (e.g. "read" and "vread" operations), the "resource" element must be specified when "params" element is specified.  If "url" and "params" elements are absent, then the request url will be constructed from "targetId" fixture if present. For "read" operation, the resource and id values will be extracted from "targetId" fixture and used to construct the url. For "vread" and "history" operations, the versionId value will also be used.
     * @short Resource type
     */
    resource?: FhirPrimitive<string>;
    /**
     * @description The label would be used for trackinglogging purposes by test engines.
     * @comment This has no impact on the verification itself.
     * @short Trackinglogging operation label
     */
    label?: FhirPrimitive<string>;
    /**
     * @description The description would be used by test engines for tracking and reporting purposes.
     * @comment This has no impact on the verification itself.
     * @short Trackingreporting operation description
     */
    description?: FhirPrimitive<string>;
    /**
     * @description The mime-type to use for RESTful operation in the 'Accept' header.
     * @comment If this is specified, then test engine shall set the 'Accept' header to the corresponding value.  If you'd like to explicitly set the 'Accept' to some other value then use the 'requestHeader' element.
     * @short Mime type to accept in the payload of the response, with charset etc
     */
    accept?: FhirPrimitive<string>;
    /**
     * @description The mime-type to use for RESTful operation in the 'Content-Type' header.
     * @comment If this is specified, then test engine shall set the 'Content-Type' header to the corresponding value.  If you'd like to explicitly set the 'Content-Type' to some other value then use the 'requestHeader' element.
     * @short Mime type of the request payload contents, with charset etc
     */
    contentType?: FhirPrimitive<string>;
    /**
     * @description The server where the request message is destined for.  Must be one of the server numbers listed in TestScript.destination section.
     * @comment If multiple TestScript.destination elements are defined and operation.destination is undefined, test engine will report an error as it cannot determine what destination to use for the exchange.
     * @short Server responding to the request
     */
    destination?: FhirPrimitive<number>;
    /**
     * @description Whether or not to implicitly send the request url in encoded format. The default is true to match the standard RESTful client behavior. Set to false when communicating with a server that does not support encoded url paths.
     * @short Whether or not to send the request url in encoded format
     */
    encodeRequestUrl: FhirPrimitive<boolean>;
    /**
     * @description The HTTP method the test engine MUST use for this operation regardless of any other operation details.
     * @comment The primary purpose of the explicit HTTP method is support of  HTTP POST method invocation of the FHIR search. Other uses will include support of negative testing.
     * @short delete | get | options | patch | post | put | head
     */
    method?: FhirPrimitive<string>;
    /**
     * @description The server where the request message originates from.  Must be one of the server numbers listed in TestScript.origin section.
     * @comment If absent, test engine will send the message.  When present, test engine will not send the request message but will wait for the request message to be sent from this origin server.
     * @short Server initiating the request
     */
    origin?: FhirPrimitive<number>;
    /**
     * @description Path plus parameters after [type].  Used to set parts of the request URL explicitly.
     * @comment If "url" element is specified, then "targetId", "params", and "resource" elements will be ignored as "url" element will have everything needed for constructing the request url.  If "params" element is specified, then "targetId" element is ignored.  For FHIR operations that require a resource (e.g. "read" and "vread" operations), the "resource" element must be specified when "params" element is specified.  If "url" and "params" elements are absent, then the request url will be constructed from "targetId" fixture if present.  For "read" operation, the resource and id values will be extracted from "targetId" fixture and used to construct the url.  For "vread" and "history" operations, the versionId value will also be used.   Test engines would append whatever is specified for "params" to the URL after the resource type without tampering with the string (beyond encoding the URL for HTTP).  The "params" element does not correspond exactly to "search parameters".  Nor is it the "path".  It corresponds to the part of the URL that comes after the [type] (when "resource" element is specified); e.g. It corresponds to "[id]_history[vid] {?_format=[mime-type]}" in the following operation: GET [base][type][id]_history[vid] {?_format=[mime-type]}  Test engines do have to look for placeholders (${}) and replace the variable placeholders with the variable values at runtime before sending the request.
     * @short Explicitly defined path parameters
     */
    params?: FhirPrimitive<string>;
    /**
     * @backbone Nested BackboneElement: requestHeader [0..*]
     */
    requestHeader?: TestScript_Setup_Action_Operation_RequestHeader[];
    /**
     * @description The fixture id (maybe new) to map to the request.
     * @comment If a requestId is supplied, then the resulting request (both headers and body) is mapped to the fixture ID (which may be entirely new and previously undeclared) designated by "requestId".  If requestId is not specified, it is the test engine's responsibility to store the request and use it as the requestId in subsequent assertions when assertion path andor headerField is specified, direction is equal to request, and the requestId in not specified.
     * @short Fixture Id of mapped request
     */
    requestId?: FhirPrimitive<string>;
    /**
     * @description The fixture id (maybe new) to map to the response.
     * @comment If a responseId is supplied, and the server responds, then the resulting response (both headers and body) is mapped to the fixture ID (which may be entirely new and previously undeclared) designated by "responseId".  If responseId is not specified, it is the test engine's responsibility to store the response and use it as the responseId in subsequent assertions when assertion path andor headerField is specified and the responseId is not specified.
     * @short Fixture Id of mapped response
     */
    responseId?: FhirPrimitive<string>;
    /**
     * @description The id of the fixture used as the body of a PUT or POST request.
     * @short Fixture Id of body for PUT and POST requests
     */
    sourceId?: FhirPrimitive<string>;
    /**
     * @description Id of fixture used for extracting the [id],  [type], and [vid] for GET requests.
     * @comment If "url" element is specified, then "targetId", "params", and "resource" elements will be ignored as "url" element will have everything needed for constructing the request url.  If "params" element is specified, then "targetId" element is ignored.  For FHIR operations that require a resource (e.g. "read" and "vread" operations), the "resource" element must be specified when "params" element is specified.  If "url" and "params" elements are absent, then the request url will be constructed from "targetId" fixture if present.  For "read" operation, the resource and id values will be extracted from "targetId" fixture and used to construct the url.  For "vread" and "history" operations, the versionId value will also be used.
     * @short Id of fixture used for extracting the [id],  [type], and [vid] for GET requests
     */
    targetId?: FhirPrimitive<string>;
    /**
     * @description Complete request URL.
     * @comment Used to set the request URL explicitly.  If "url" element is defined, then "targetId", "resource", and "params" elements will be ignored.  Test engines would use whatever is specified in "url" without tampering with the string (beyond encoding the URL for HTTP).  Test engines do have to look for placeholders (${}) and replace the variable placeholders with the variable values at runtime before sending the request.
     * @short Request URL
     */
    url?: FhirPrimitive<string>;
}
//# sourceMappingURL=TestScript_Setup_Action_Operation.d.ts.map