Tasking in SDK

Create and manage tasking orders using the SDK.


Overview

Order new geospatial data to be captured over a specific area and at a given time.

View repository

Constants

ConstantDescriptionValue
GeometryGeometry types.Union[catalog.Geometry, geom.Point]
QuotationDecisionAn acceptable decision for a not decided quotation.Literal["ACCEPTED", "REJECTED"]
QuotationStatusDecision statuses for quotations.Union[Literal["NOT_DECIDED"], QuotationDecision]
FeasibilityStatusDecision statuses for feasibility studies.Literal["NOT_DECIDED", "ACCEPTED"]

Class: Tasking

A class that enables access to the tasking functionality. This class also inherits methods from the CatalogBase class.

Methods

construct_order_parameters

This method is deprecated and will be removed in 3.0.0. Use BatchOrderTemplate.

Constructs an order form for a specific data product. Returns order.OrderParams.

ParameterDescription
data_product_id

str

The data product ID.

name

str

The order name.

acquisition_start

Union[str, datetime.datetime]

The start date of the acquisition period in the YYYY-MM-DD format.

acquisition_end

Union[str, datetime.datetime]

The end date of the acquisition period in the YYYY-MM-DD format.

geometry

Geometry

The order geometry.

tags

Optional[List[str]]

A list of tags that categorize the order.

Python
tasking = up42.initialize_tasking()
tasking.construct_order_parameters(
data_product_id="123eabab-0511-4f36-883a-80928716c3db",
name="PNeo tasking order",
acquisition_start="2023-11-01",
acquisition_end="2023-12-20",
geometry = {
"type": "Polygon",
"coordinates": (
(
(13.375966, 52.515068),
(13.375966, 52.516639),
(13.378314, 52.516639),
(13.378314, 52.515068),
(13.375966, 52.515068),
),
),
},
tags=["project-7", "optical"],
)

get_quotations

This method is deprecated and will be removed in 3.0.0. Use Quotation.all.

Retrieves quotations for tasking orders. Returns list[dict].

ParameterDescription
quotation_id

Optional[str]

The quotation ID.

workspace_id

Optional[str]

The workspace ID. Use to get quotations from a specific workspace. Otherwise, quotations from the entire account will be returned.

order_id

Optional[str]

The order ID.

decision

Optional[List[QuotationStatus]]

The status of quotations.

sortby

str

Arranges elements in the order specified in descending based on a chosen field. The default value is createdAt.

descending

bool

Determines the arrangement of elements:

  • True: Arranges elements in descending order based on the field specified in sortby.
  • False: Arranges elements in ascending order based on the field specified in sortby.

The default value is True.

Python
tasking = up42.initialize_tasking()
tasking.get_quotations(
workspace_id="68567134-27ad-7bd7-4b65-d61adb11fc78",
decision="NOT_DECIDED",
sortby="updatedAt",
descending=False,
)

decide_quotation

This method is deprecated and will be removed in 3.0.0. Use Quotation.accept/Quotation.reject and Quotation.save.

Allows you to accept or reject a quotation for a tasking order. You can only perform actions with feasibility studies with the NOT_DECIDED status. Returns dict.

ParameterDescription
quotation_id

str

The quotation ID.

decision

QuotationDecision

The decision made for this quotation.

Python
tasking = up42.initialize_tasking()
tasking.decide_quotation(
quotation_id="68567134-27ad-7bd7-4b65-d61adb11fc78",
decision="ACCEPTED",
)

get_feasibility

This method is deprecated and will be removed in 3.0.0. Use FeasibilityStudy.all.

Retrieves feasibility studies for tasking orders. Returns list[dict].

ParameterDescription
feasibility_id

Optional[str]

The feasibility study ID.

workspace_id

Optional[str]

The workspace ID. Use to get feasibility studies from a specific workspace. Otherwise, feasibility studies from the entire account will be returned.

order_id

Optional[str]

The order ID.

decision

Optional[List[FeasibilityStatus]]

The status of feasibility studies.

sortby

str

Arranges elements in the order specified in descending based on a chosen field. The default value is createdAt.

descending

bool

Determines the arrangement of elements:

  • True: Arranges elements in descending order based on the field specified in sortby.
  • False: Arranges elements in ascending order based on the field specified in sortby.

The default value is True.

Python
tasking = up42.initialize_tasking()
tasking.get_feasibility(
workspace_id="68567134-27ad-7bd7-4b65-d61adb11fc78",
decision="NOT_DECIDED",
sortby="updatedAt",
descending=False,
)

choose_feasibility

This method is deprecated and will be removed in 3.0.0. Use FeasibilityStudy.accept and FeasibilityStudy.save.

Allows you to accept one of the proposed feasibility study options. You can only perform actions with feasibility studies with the NOT_DECIDED status. Returns dict.

ParameterDescription
feasibility_id

str

The feasibility study ID.

accepted_option_id

str

The ID of the feasibility option to accept.

Python
tasking = up42.initialize_tasking()
tasking.choose_feasibility(
feasibility_id="68567134-27ad-7bd7-4b65-d61adb11fc78",
accepted_option_id="a0d443a2-41e8-4995-8b54-a5cc4c448227",
)

Class: QuotationSorting

A class that provides sorting options for quotations.

Attributes

AttributeDescription
created_at

utils.SortingField

Sorts by creation date. The default order is ascending.

updated_at

utils.SortingField

Sorts by update date. The default order is ascending.

decided_at

utils.SortingField

Sorts by decision date. The default order is ascending.

credits_price

utils.SortingField

Sorts by price, in credits. The default order is ascending.

Python
from itertools import islice
# Sort by creation date, from the most recent to the earliest
quotations_sorted = up42.Quotation.all(sort_by=up42.QuotationSorting.created_at.desc)
10 collapsed lines
# Sort by the last update date, from the most recent to the earliest
# quotations_sorted = up42.Quotation.all(sort_by=up42.QuotationSorting.updated_at.desc)
# Sort by decision date, from the most recent to the earliest
# quotations_sorted = up42.Quotation.all(sort_by=up42.QuotationSorting.decided_at.desc)
# Sort by price, from the highest to the lowest
# quotations_sorted = up42.Quotation.all(sort_by=up42.QuotationSorting.credits_price.desc)
# Define output for one of the sorting examples
for quotation in islice(quotations_sorted, 0, 5): # Print first 5 results
print(f"- Quotation ID: {quotation.id}")
print(f" Decision: {quotation.decision}")
print(f" Price: {quotation.credits_price} credits")
print(f" Created at: {quotation.created_at}\n")

Class: Quotation

A data class that represents a quotation for a tasking order.

Attributes

AttributeDescription
id

str

The quotation ID.

created_at

str

The time the quotation was created.

updated_at

str

The last time the quotation data was changed.

decided_at

Optional[str]

The time the decision was made on this quotation.

account_id

str

The account ID.

workspace_id

str

The workspace ID.

order_id

str

The order ID.

credits_price

int

The amount of credits that will be charged.

decision

QuotationStatus

The decision for this quotation.

Python
# Select a quotation
quotation_id = "a3210ea7-1570-4c28-9052-d3fbe45ae30c"
# Get the specific quotation by its ID
quotation = next(up42.Quotation.all(quotation_id=quotation_id))
# Define output
print(f"Quotation details for ID: {quotation.id}")
print(f"Created at: {quotation.created_at}")
print(f"Decided at: {quotation.decided_at}")
print(f"Order ID: {quotation.order_id}")
print(f"Price: {quotation.credits_price} credits")
print(f"Decision: {quotation.decision}")

Methods

accept

Marks the quotation as accepted by setting its decision attribute to ACCEPTED. Use save to apply the change.

Python
# Select a quotation
quotation_id = "b3b17f05-d9b5-47a1-a8d6-e15196f1204e"
quotation = next(up42.Quotation.all(quotation_id=quotation_id))
print(f"Fetched quotation: {quotation.id}")
print(f"Initial decision: {quotation.decision}")
# Accept the quotation locally
quotation.accept()
# Save the decision to the server
quotation.save()
# The object is updated with the server response
print(f"Final decision: {quotation.decision}")
print(f"Decided at: {quotation.decided_at}")

reject

Marks the quotation as accepted by setting its decision attribute to REJECTED. Use save to apply the change.

Python
# Select a quotation
quotation_id = "b3b17f05-d9b5-47a1-a8d6-e15196f1204e"
quotation = next(up42.Quotation.all(quotation_id=quotation_id))
print(f"Fetched quotation: {quotation.id}")
print(f"Initial decision: {quotation.decision}")
# Reject the quotation locally
quotation.reject()
# Save the decision to the server
quotation.save()
# The object is updated with the server response
print(f"Final decision: {quotation.decision}")
print(f"Decided at: {quotation.decided_at}")

save

Saves any changes to the decision status of the quotation and updates the properties.

Python
# Select a quotation
quotation_id = "b3b17f05-d9b5-47a1-a8d6-e15196f1204e"
quotation = next(up42.Quotation.all(quotation_id=quotation_id))
print(f"Fetched quotation: {quotation.id}")
print(f"Initial decision: {quotation.decision}")
# Accept the quotation locally
quotation.accept()
# Save the decision to the server
quotation.save()
# The object is updated with the server response
print(f"Final decision: {quotation.decision}")
print(f"Decided at: {quotation.decided_at}")

all

Retrieves quotations based on optional filter parameters. Returns Iterator["Quotation"]. Use itertools.islice to offset and limit the results.

ParameterDescription
quotation_id

Optional[str]

The quotation ID.

workspace_id

Optional[str]

The workspace ID. Use to get objects from a specific workspace. Otherwise, objects from the entire account will be returned.

order_id

Optional[str]

The order ID.

decision

Optional[List[QuotationStatus]]

The status of quotations.

sort_by

Optional[utils.SortingField]

The results sorting method that arranges elements in ascending or descending order based on a chosen field.

Python
from itertools import islice
# Search for quotations
quotations = up42.Quotation.all(
decision=["NOT_DECIDED"],
order_id="ea36dee9-fed6-457e-8400-2c20ebd30f44",
)
# Define output
for quotation in islice(quotations, 0, 5): # Print first 5 results
print(f"- Quotation ID: {quotation.id}")
print(f" Created at: {quotation.created_at}")
print(f" Decided at: {quotation.decided_at}")
print(f" Order ID: {quotation.order_id}")
print(f" Price: {quotation.credits_price} credits")
print(f" Decision: {quotation.decision}\n")

Class: FeasibilityStudySorting

A class that provides sorting options for feasibility studies.

Attributes

AttributeDescription
created_at

utils.SortingField

Sorts by creation date. The default order is ascending.

updated_at

utils.SortingField

Sorts by update date. The default order is ascending.

decided_at

utils.SortingField

Sorts by decision date. The default order is ascending.

Python
from itertools import islice
# Sort by creation date, from the most recent to the earliest
feasibility_studies_sorted = up42.FeasibilityStudy.all(sort_by=up42.FeasibilityStudySorting.created_at.desc)
7 collapsed lines
# Sort by the last update date, from the most recent to the earliest
# feasibility_studies_sorted = up42.FeasibilityStudy.all(sort_by=up42.FeasibilityStudySorting.updated_at.desc)
# Sort by decision date, from the most recent to the earliest
# feasibility_studies_sorted = up42.FeasibilityStudy.all(sort_by=up42.FeasibilityStudySorting.decided_at.desc)
for feasibility_study in islice(feasibility_studies_sorted, 0, 5): # Print 5
print(f"- Feasibility study ID: {feasibility_study.id}")
print(f" Order ID: {feasibility_study.order_id}")
print(f" Status: {feasibility_study.status}")
print(f" Study decision: {feasibility_study.decision}")
print(f" Available options: {feasibility_study.options}")
print(f" Accepted option ID: {feasibility_study.decision_option.id}")
print(f" Accepted option description: {feasibility_study.decision_option.description}\n")

Class: FeasibilityStudyDecisionOption

A data class that represents the option of the feasibility study that was accepted for a given order.

Attributes

AttributeDescription
id

str

The feasibility study option ID.

description

Optional[str]

A description of the feasibility study option.

Python
# Select a feasibility study
feasibility_study_id = "ea36dee9-fed6-457e-8400-2c20ebd30f44"
# Fetch feasibility study info
feasibility_study = next(up42.FeasibilityStudy.all(feasibility_study_id=feasibility_study_id))
# Define output
print(f"Feasibility study details for ID: {feasibility_study.id}")
print(f"Order ID: {feasibility_study.order_id}")
print(f"Status: {feasibility_study.status}")
print(f"Study decision: {feasibility_study.decision}")
print(f"Available options: {feasibility_study.options}")
print(f"Accepted option ID: {feasibility_study.decision_option.id}")
print(f"Accepted option description: {feasibility_study.decision_option.description}\n")

Class: FeasibilityStudy

A data class that represents a feasibility study for a tasking order.

Attributes

AttributeDescription
id

str

The feasibility study ID.

created_at

str

The time the feasibility study was created.

updated_at

str

The last time the feasibility study was changed.

account_id

str

The account ID.

workspace_id

str

The workspace ID.

order_id

str

The order ID.

decision

FeasibilityStatus

The decision for this feasibility study.

options

List[dict]

Options available for the feasibility study.

decided_at

Optional[str]

The time the decision was made on this feasibility study.

decision_option

Optional[FeasibilityStudyDecisionOption]

The option of the feasibility study that was accepted.

Python
# Select a feasibility study
feasibility_study_id = "ea36dee9-fed6-457e-8400-2c20ebd30f44"
# Fetch feasibility study info
feasibility_study = next(up42.FeasibilityStudy.all(feasibility_study_id=feasibility_study_id))
# Define output
print(f"Feasibility study details for ID: {feasibility_study.id}")
print(f"Order ID: {feasibility_study.order_id}")
print(f"Status: {feasibility_study.status}")
print(f"Study decision: {feasibility_study.decision}")
print(f"Available options: {feasibility_study.options}")
print(f"Accepted option ID: {feasibility_study.decision_option.id}")
print(f"Accepted option description: {feasibility_study.decision_option.description}\n")

Methods

all

Retrieves feasibility studies based on optional filter parameters. Returns Iterator["FeasibilityStudy"]. Use itertools.islice to offset and limit the results.

ParameterDescription
feasibility_study_id

Optional[str]

The feasibility study ID.

workspace_id

Optional[str]

The workspace ID.

order_id

Optional[str]

The order ID.

decision

Optional[List[FeasibilityStatus]]

The decision for this feasibility study.

sort_by

Optional[utils.SortingField]]

The results sorting method that arranges elements in ascending or descending order based on a chosen field.

Python
from itertools import islice
# Select an order
order_id = "ea36dee9-fed6-457e-8400-2c20ebd30f44"
# Search for feasibility studies
feasibility_studies = up42.FeasibilityStudy.all(
order_id=order_id,
decision=["NOT_DECIDED"],
)
# Define output
for feasibility_study in islice(feasibility_studies, 0, 5): # Print first 5 results
print(f"- Feasibility study ID: {feasibility_study.id}")
print(f" Order ID: {feasibility_study.order_id}")
print(f" Status: {feasibility_study.status}")
print(f" Study decision: {feasibility_study.decision}")
print(f" Available options: {feasibility_study.options}")
print(f" Accepted option ID: {feasibility_study.decision_option.id}")
print(f" Accepted option description: {feasibility_study.decision_option.description}\n")

accept

Selects a feasibility study option for acceptance. Use save to apply the change.

ParameterDescription
option_id

str

The ID of the option to accept.

Python
# Select a feasibility study
6 collapsed lines
feasibility_study_id = "ea36dee9-fed6-457e-8400-2c20ebd30f44"
# Get the specific feasibility study by its ID
feasibility_study = next(up42.FeasibilityStudy.all(feasibility_study_id=feasibility_study_id))
print(f"Fetched feasibility study: {feasibility_study.id}")
print(f"Initial decision: {feasibility_study.decision}")
# Print available options
6 collapsed lines
available_options = feasibility_study.options
print("\nAvailable options:")
for option in available_options:
description = option.get('description', 'No description')
print(f" - ID: {option['id']}")
print(f" Description: {description}")
# Accept a specific feasibility study option locally
option_to_accept_id = "033b4a5a-c492-4eba-915e-2000a0a84049"
feasibility_study.accept(option_id=option_to_accept_id)
# Save the decision to the server
feasibility_study.save()
# The object is updated with the server response
print(f"Final decision: {feasibility_study.decision}")
print(f"Chosen option ID: {feasibility_study.decision_option.id}")
print(f"Decided at: {feasibility_study.decided_at}")

save

Saves any changes to the decision status of the feasibility study option and updates the properties.

Python
# Select a feasibility study
6 collapsed lines
feasibility_study_id = "ea36dee9-fed6-457e-8400-2c20ebd30f44"
# Get the specific feasibility study by its ID
feasibility_study = next(up42.FeasibilityStudy.all(feasibility_study_id=feasibility_study_id))
print(f"Fetched feasibility study: {feasibility_study.id}")
print(f"Initial decision: {feasibility_study.decision}")
# Print available options
6 collapsed lines
available_options = feasibility_study.options
print("\nAvailable options:")
for option in available_options:
description = option.get('description', 'No description')
print(f" - ID: {option['id']}")
print(f" Description: {description}")
# Accept a specific feasibility study option locally
option_to_accept_id = "033b4a5a-c492-4eba-915e-2000a0a84049"
feasibility_study.accept(option_id=option_to_accept_id)
# Save the decision to the server
feasibility_study.save()
# The object is updated with the server response
print(f"Final decision: {feasibility_study.decision}")
print(f"Chosen option ID: {feasibility_study.decision_option.id}")
print(f"Decided at: {feasibility_study.decided_at}")

Learn more


Last updated: