Jobs
- class ab.api.endpoints.jobs.JobsEndpoint(acportal_client, abc_client, resolver)[source]
Operations on jobs (ACPortal + ABC APIs).
Subgroups (each is a
BaseEndpointinstance organised by swagger tag):note—JobNote(api.jobs.note)on_hold—JobOnHold(api.jobs.on_hold)form—JobForm(api.jobs.form)
The legacy flat method names (
get_notes,list_on_hold…) remain on this class as deprecation shims and forward to the subgroups.- Parameters:
acportal_client (HttpClient)
abc_client (HttpClient)
resolver (CodeResolver)
- note: JobNoteEndpoint
- on_hold: JobOnHoldEndpoint
- form: JobFormEndpoint
- timeline: JobTimelineEndpoint
- email: JobEmailEndpoint
- sms: JobSmsEndpoint
- freight_providers: JobFreightProvidersEndpoint
- parcel_items: JobParcelItemsEndpoint
- tracking: JobTrackingEndpoint
- status: JobStatusEndpoint
- payment: JobPaymentEndpoint
- shipment: JobShipmentEndpoint
- rfq: JobRfqEndpoint
- create(*, data)[source]
POST /job.
- Parameters:
data (JobCreateRequest | dict) – Job creation payload with customer, pickup, delivery, items, and services. Accepts a
JobCreateRequestinstance or a dict.- Return type:
None
Request model:
JobCreateRequestDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/create.html Request model: JobCreateRequest
- save(*, data)[source]
PUT /job/save.
- Parameters:
data (JobSaveRequest | dict) – Job save payload with jobDisplayId, customer, pickup, delivery, and items. Accepts a
JobSaveRequestinstance or a dict.- Return type:
None
Request model:
JobSaveRequestDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/save.html Request model: JobSaveRequest
- get(job_display_id)[source]
GET /job/{jobDisplayId} (ACPortal)
Retrieve a job by its display ID.
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/get.html Response model: Job
- search(*, job_display_id=None)[source]
GET /job/search (ACPortal) — query params.
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/search.html Query params: JobSearchParams Response model: JobSearchResult
- Parameters:
job_display_id (int | None)
- Return type:
- search_by_details(*, data)[source]
POST /job/searchByDetails.
- Parameters:
data (JobSearchRequest | dict) – Search filter with search_text, page, page_size, and sort_by. Accepts a
JobSearchRequestinstance or a dict.- Return type:
Request model:
JobSearchRequestDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/search_by_details.html Request model: JobSearchRequest Response model: List[JobSearchResult]
- get_price(job_display_id)[source]
GET /job/{jobDisplayId}/price (ACPortal)
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/get_price.html Response model: JobPrice
- get_calendar_items(job_display_id)[source]
GET /job/{jobDisplayId}/calendaritems (ACPortal)
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/get_calendar_items.html Response model: List[CalendarItem]
- Parameters:
job_display_id (int)
- Return type:
- get_update_page_config(job_display_id)[source]
GET /job/{jobDisplayId}/updatePageConfig (ACPortal)
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/get_update_page_config.html Response model: JobUpdatePageConfig
- Parameters:
job_display_id (int)
- Return type:
- update(*, data)[source]
POST /job/update (ABC API surface).
- Parameters:
data (JobUpdateRequest | dict) – Job update payload with job_id and updates. Accepts a
JobUpdateRequestinstance or a dict.- Return type:
None
Request model:
JobUpdateRequestDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/update.html Request model: JobUpdateRequest
- transfer(job_display_id, franchisee_id)[source]
POST /job/transfer/{jobDisplayId} (ACPortal)
- Parameters:
- Return type:
None
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/transfer.html Request model: TransferModel
- get_timeline_response(job_display_id)[source]
Deprecated. Use
api.jobs.timeline.response(...).- Parameters:
job_display_id (int)
- Return type:
- get_timeline(job_display_id)[source]
Deprecated. Use
api.jobs.timeline.list(...).- Parameters:
job_display_id (int)
- Return type:
- create_timeline_task(job_display_id, *, data, create_email=None)[source]
Deprecated. Use
api.jobs.timeline.create_task(...).- Parameters:
job_display_id (int)
data (BaseTimelineTaskRequest | dict)
create_email (bool | None)
- Return type:
- get_timeline_task(job_display_id, task_id)[source]
Deprecated. Use
api.jobs.timeline.get_task(...).- Parameters:
- Return type:
- update_timeline_task(job_display_id, task_id, *, data)[source]
Deprecated. Use
api.jobs.timeline.update_task(...).- Parameters:
job_display_id (int)
task_id (str)
data (TimelineTaskUpdateRequest | dict)
- Return type:
- delete_timeline_task(job_display_id, task_id)[source]
Deprecated. Use
api.jobs.timeline.delete_task(...).- Parameters:
- Return type:
- get_timeline_agent(job_display_id, task_code)[source]
Deprecated. Use
api.jobs.timeline.get_agent(...).- Parameters:
- Return type:
TimelineAgent | None
- increment_status(job_display_id, *, data)[source]
Deprecated. Use
api.jobs.timeline.increment_status(...).- Parameters:
job_display_id (int)
data (IncrementStatusRequest | dict)
- Return type:
- undo_increment_status(job_display_id, *, data)[source]
Deprecated. Use
api.jobs.timeline.undo_increment_status(...).- Parameters:
job_display_id (int)
data (IncrementStatusRequest | dict)
- Return type:
- set_quote_status(job_display_id)[source]
Deprecated. Use
api.jobs.status.set_quote(...).- Parameters:
job_display_id (int)
- Return type:
- get_tracking(job_display_id)[source]
Deprecated. Use
api.jobs.tracking.get(...).- Parameters:
job_display_id (int)
- Return type:
- get_tracking_v3(job_display_id, history_amount=10)[source]
Deprecated. Use
api.jobs.tracking.v3(...).- Parameters:
- Return type:
- get_notes(job_display_id, *, category=None, task_code=None)[source]
Deprecated. Use
api.jobs.note.list(...).
- create_note(job_display_id, *, data)[source]
Deprecated. Use
api.jobs.note.create(...).- Parameters:
job_display_id (int)
data (JobNoteCreateRequest | dict)
- Return type:
- update_note(job_display_id, note_id, *, data)[source]
Deprecated. Use
api.jobs.note.update(...).- Parameters:
job_display_id (int)
note_id (str)
data (JobNoteUpdateRequest | dict)
- Return type:
- get_parcel_items(job_display_id)[source]
Deprecated. Use
api.jobs.parcel_items.list(...).- Parameters:
job_display_id (int)
- Return type:
- create_parcel_item(job_display_id, *, data)[source]
Deprecated. Use
api.jobs.parcel_items.create(...).- Parameters:
job_display_id (int)
data (ParcelItemCreateRequest | dict)
- Return type:
- delete_parcel_item(job_display_id, parcel_item_id)[source]
Deprecated. Use
api.jobs.parcel_items.delete(...).- Parameters:
- Return type:
- get_parcel_items_with_materials(job_display_id)[source]
Deprecated. Use
api.jobs.parcel_items.list_with_materials(...).- Parameters:
job_display_id (int)
- Return type:
- get_packaging_containers(job_display_id)[source]
GET /job/{jobDisplayId}/packagingcontainers (ACPortal)
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/get_packaging_containers.html Response model: List[PackagingContainer]
- Parameters:
job_display_id (int)
- Return type:
- update_item(job_display_id, item_id, *, data)[source]
PUT /job/{jobDisplayId}/item/{itemId}.
- Parameters:
job_display_id (int) – Job display ID.
item_id (str) – Item identifier.
data (ItemUpdateRequest | dict) – Item update payload with description, quantity, and weight. Accepts an
ItemUpdateRequestinstance or a dict.
- Return type:
Request model:
ItemUpdateRequestDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/update_item.html Request model: ItemUpdateRequest Response model: ServiceBaseResponse
- add_item_notes(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/item/notes.
- Parameters:
job_display_id (int) – Job display ID.
data (ItemNotesRequest | dict) – Item notes payload. Accepts an
ItemNotesRequestinstance or a dict.
- Return type:
Request model:
ItemNotesRequestDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/add_item_notes.html Request model: ItemNotesRequest Response model: ServiceBaseResponse
- list_rfqs(job_display_id)[source]
Deprecated. Use
api.jobs.rfq.list(...).- Parameters:
job_display_id (int)
- Return type:
- get_rfq_status(job_display_id, rfq_service_type, company_id)[source]
Deprecated. Use
api.jobs.rfq.status(...).
- list_on_hold(job_display_id)[source]
Deprecated. Use
api.jobs.on_hold.list(...).- Parameters:
job_display_id (int)
- Return type:
- create_on_hold(job_display_id, *, data)[source]
Deprecated. Use
api.jobs.on_hold.create(...).- Parameters:
job_display_id (int)
data (SaveOnHoldRequest | dict)
- Return type:
- delete_on_hold(job_display_id)[source]
Deprecated. Use
api.jobs.on_hold.delete(...).- Parameters:
job_display_id (int)
- Return type:
None
- get_on_hold(job_display_id, on_hold_id)[source]
Deprecated. Use
api.jobs.on_hold.get(...).- Parameters:
- Return type:
- update_on_hold(job_display_id, on_hold_id, *, data)[source]
Deprecated. Use
api.jobs.on_hold.update(...).- Parameters:
job_display_id (int)
on_hold_id (str)
data (SaveOnHoldRequest | dict)
- Return type:
- get_on_hold_followup_user(job_display_id, contact_id)[source]
Deprecated. Use
api.jobs.on_hold.get_followup_user(...).- Parameters:
- Return type:
- list_on_hold_followup_users(job_display_id)[source]
Deprecated. Use
api.jobs.on_hold.list_followup_users(...).- Parameters:
job_display_id (int)
- Return type:
- add_on_hold_comment(job_display_id, on_hold_id, *, data)[source]
Deprecated. Use
api.jobs.on_hold.add_comment(...).- Parameters:
job_display_id (int)
on_hold_id (str)
data (OnHoldCommentRequest | dict)
- Return type:
- update_on_hold_dates(job_display_id, on_hold_id, *, data)[source]
Deprecated. Use
api.jobs.on_hold.update_dates(...).- Parameters:
job_display_id (int)
on_hold_id (str)
data (SaveOnHoldDatesModel | dict)
- Return type:
None
- resolve_on_hold(job_display_id, on_hold_id, *, data)[source]
Deprecated. Use
api.jobs.on_hold.resolve(...).- Parameters:
job_display_id (int)
on_hold_id (str)
data (ResolveOnHoldRequest | dict)
- Return type:
- send_email(job_display_id, *, data)[source]
Deprecated. Use
api.jobs.email.send(...).- Parameters:
job_display_id (int)
data (SendEmailRequest | dict)
- Return type:
None
- send_document_email(job_display_id, *, data)[source]
Deprecated. Use
api.jobs.email.send_document(...).- Parameters:
job_display_id (int)
data (SendDocumentEmailModel | dict)
- Return type:
None
- create_transactional_email(job_display_id)[source]
Deprecated. Use
api.jobs.email.create_transactional(...).- Parameters:
job_display_id (int)
- Return type:
None
- send_template_email(job_display_id, template_guid)[source]
Deprecated. Use
api.jobs.email.send_template(...).
- list_sms(job_display_id)[source]
Deprecated. Use
api.jobs.sms.list(...).- Parameters:
job_display_id (int)
- Return type:
None
- send_sms(job_display_id, *, data)[source]
Deprecated. Use
api.jobs.sms.send(...).- Parameters:
job_display_id (int)
data (SendSMSModel | dict)
- Return type:
None
- mark_sms_read(job_display_id, *, data)[source]
Deprecated. Use
api.jobs.sms.mark_read(...).- Parameters:
job_display_id (int)
data (MarkSmsAsReadModel | dict)
- Return type:
None
- get_sms_template(job_display_id, template_id)[source]
Deprecated. Use
api.jobs.sms.get_template(...).
- list_freight_providers(job_display_id, *, provider_indexes=None, shipment_types=None, only_active=None)[source]
Deprecated. Use
api.jobs.freight_providers.list(...).
- save_freight_providers(job_display_id, *, data)[source]
Deprecated. Use
api.jobs.freight_providers.save(...).- Parameters:
job_display_id (int)
data (ShipmentPlanProvider | dict)
- Return type:
None
- get_freight_provider_rate_quote(job_display_id, option_index, *, data)[source]
Deprecated. Use
api.jobs.freight_providers.rate_quote(...).- Parameters:
job_display_id (int)
option_index (int)
data (RateQuoteRequest | dict)
- Return type:
None
- add_freight_items(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/freightitems.
- Parameters:
job_display_id (int) – Job display ID.
data (FreightItemsRequest | dict) – Freight items payload. Accepts a
FreightItemsRequestinstance or a dict.
- Return type:
None
Request model:
FreightItemsRequestDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/add_freight_items.html Request model: FreightItemsRequest
- change_agent(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/changeAgent.
- Parameters:
job_display_id (int) – Job display ID.
data (ChangeJobAgentRequest | dict) – Agent change payload with service type, agent ID, and optional price/rebate flags. Accepts a
ChangeJobAgentRequestinstance or a dict.
- Returns:
- Return type:
Request model:
ChangeJobAgentRequestDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/change_agent.html Request model: ChangeJobAgentRequest Response model: ServiceBaseResponse
The Jobs endpoint handles two API surfaces: ACPortal and ABC.
Access it via api.jobs for direct endpoint methods, api.jobs.tasks for timeline helpers,
and api.jobs.agent for agent assignment helpers.
Per-endpoint reference
Each route-backed method has its own page rendering the HTTP route, the
Python and CLI call signatures, and the request/response model field tables.
This is the page help(api.jobs.<method>) links to via its Docs: footer.
These pages are generated by scripts/generate_endpoint_docs.py and kept
current by a CI freshness gate.
api.jobs.add_freight_itemsapi.jobs.add_item_notesapi.jobs.change_agentapi.jobs.createapi.jobs.email.create_transactionalapi.jobs.email.sendapi.jobs.email.send_documentapi.jobs.email.send_templateapi.jobs.form.shipmentsapi.jobs.freight_providers.listapi.jobs.freight_providers.rate_quoteapi.jobs.freight_providers.saveapi.jobs.getapi.jobs.get_calendar_itemsapi.jobs.get_packaging_containersapi.jobs.get_priceapi.jobs.get_update_page_configapi.jobs.note.createapi.jobs.note.getapi.jobs.note.listapi.jobs.note.updateapi.jobs.on_hold.add_commentapi.jobs.on_hold.createapi.jobs.on_hold.deleteapi.jobs.on_hold.getapi.jobs.on_hold.get_followup_userapi.jobs.on_hold.listapi.jobs.on_hold.list_followup_usersapi.jobs.on_hold.resolveapi.jobs.on_hold.updateapi.jobs.on_hold.update_datesapi.jobs.parcel_items.createapi.jobs.parcel_items.deleteapi.jobs.parcel_items.listapi.jobs.parcel_items.list_with_materialsapi.jobs.payment.ach_credit_transferapi.jobs.payment.attach_customer_bankapi.jobs.payment.cancel_ach_verificationapi.jobs.payment.create_ach_sessionapi.jobs.payment.getapi.jobs.payment.get_createapi.jobs.payment.get_sourcesapi.jobs.payment.pay_by_sourceapi.jobs.payment.set_bank_sourceapi.jobs.payment.verify_ach_sourceapi.jobs.rfq.listapi.jobs.rfq.statusapi.jobs.saveapi.jobs.searchapi.jobs.search_by_detailsapi.jobs.shipment.add_accessorialapi.jobs.shipment.bookapi.jobs.shipment.deleteapi.jobs.shipment.get_accessorialsapi.jobs.shipment.get_export_dataapi.jobs.shipment.get_origin_destinationapi.jobs.shipment.get_rate_quotesapi.jobs.shipment.get_rates_stateapi.jobs.shipment.post_export_dataapi.jobs.shipment.remove_accessorialapi.jobs.shipment.request_rate_quotesapi.jobs.sms.get_templateapi.jobs.sms.listapi.jobs.sms.mark_readapi.jobs.sms.sendapi.jobs.status.set_quoteapi.jobs.timeline.create_taskapi.jobs.timeline.delete_taskapi.jobs.timeline.get_taskapi.jobs.timeline.increment_statusapi.jobs.timeline.responseapi.jobs.timeline.undo_increment_statusapi.jobs.timeline.update_taskapi.jobs.tracking.getapi.jobs.tracking.v3api.jobs.transferapi.jobs.updateapi.jobs.update_item
Subgroups
Job-scoped operations are organised into subgroups named for their swagger
tag (lowercase, with Job dropped and snake_case applied to multi-word
tags). Each subgroup is a BaseEndpoint instance attached to
JobsEndpoint:
Attribute |
Swagger tag |
Class |
Methods |
|---|---|---|---|
|
|
4 |
|
|
|
10 |
|
Example: |
|||
|
|
20 |
|
|
|
9 |
|
|
|
4 |
|
|
|
4 |
|
|
|
|
3 |
|
|
4 |
|
|
|
2 |
|
|
|
1 |
|
|
|
10 |
|
|
|
11 |
|
|
|
2 |
Migration notes
Legacy flat method names on
api.jobs.*(get_notes,list_on_hold,get_timeline_response,send_email,list_sms,get_tracking,set_quote_status,list_rfqs, …) all remain as deprecation shims that emit aDeprecationWarningand forward to the subgroup method.api.formsis now a deprecation shim that forwards toapi.jobs.form.api.paymentsis now a deprecation shim that forwards toapi.jobs.payment.api.shipmentsretains its 3 non-job-scoped methods (get_shipment,get_global_accessorials,get_shipment_document) as canonical. The 11 job-scoped methods are now deprecation shims forwarding toapi.jobs.shipment.api.rfqretains its 7 lifecycle methods unchanged; the 2 job-scoped/job/{id}/rfq/*routes that used to live onapi.jobs.*are now atapi.jobs.rfq.
- class ab.api.endpoints.jobs.note.JobNoteEndpoint(client)[source]
Job-scoped note operations (ACPortal API).
Reached via
api.jobs.note. Each method takes the job’sjob_display_idas its first positional argument.- Parameters:
client (HttpClient)
- list(job_display_id, *, category=None, task_code=None)[source]
List notes attached to job_display_id (
GET /job/{jobDisplayId}/note).- Parameters:
- Return type:
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/note.list.html Query params: JobNoteListParams Response model: List[JobNote]
- get(job_display_id, note_id)[source]
Fetch a single note (
GET /job/{jobDisplayId}/note/{id}).Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/note.get.html Response model: JobNote
- create(job_display_id, *, data)[source]
Create a note (
POST /job/{jobDisplayId}/note).- Parameters:
job_display_id (int) – Job display ID.
data (JobNoteCreateRequest | dict) –
JobNoteCreateRequestinstance or a dict.
- Return type:
Request model:
JobNoteCreateRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/note.create.html Request model: JobNoteCreateRequest Response model: JobNote
- update(job_display_id, note_id, *, data)[source]
Update a note (
PUT /job/{jobDisplayId}/note/{id}).- Parameters:
job_display_id (int) – Job display ID.
note_id (str) – Note identifier.
data (JobNoteUpdateRequest | dict) –
JobNoteUpdateRequestinstance or a dict.
- Return type:
Request model:
JobNoteUpdateRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/note.update.html Request model: JobNoteUpdateRequest Response model: JobNote
- class ab.api.endpoints.jobs.on_hold.JobOnHoldEndpoint(client)[source]
Job-scoped on-hold operations (ACPortal API).
- Parameters:
client (HttpClient)
- list(job_display_id)[source]
List on-hold records for job_display_id.
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/on_hold.list.html Response model: List[ExtendedOnHoldInfo]
- Parameters:
job_display_id (int)
- Return type:
- get(job_display_id, on_hold_id)[source]
Fetch one on-hold record.
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/on_hold.get.html Response model: OnHoldDetails
- Parameters:
- Return type:
- create(job_display_id, *, data)[source]
Place a job on hold.
Request model:
SaveOnHoldRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/on_hold.create.html Request model: SaveOnHoldRequest Response model: SaveOnHoldResponse
- Parameters:
job_display_id (int)
data (SaveOnHoldRequest | dict)
- Return type:
- delete(job_display_id)[source]
Remove the active on-hold record for job_display_id.
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/on_hold.delete.html
- Parameters:
job_display_id (int)
- Return type:
None
- update(job_display_id, on_hold_id, *, data)[source]
Update an existing on-hold record.
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/on_hold.update.html Request model: SaveOnHoldRequest Response model: SaveOnHoldResponse
- Parameters:
job_display_id (int)
on_hold_id (str)
data (SaveOnHoldRequest | dict)
- Return type:
- get_followup_user(job_display_id, contact_id)[source]
Resolve one follow-up user by contact ID.
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/on_hold.get_followup_user.html Response model: OnHoldUser
- Parameters:
- Return type:
- list_followup_users(job_display_id)[source]
List all follow-up users available for the job.
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/on_hold.list_followup_users.html Response model: List[OnHoldUser]
- Parameters:
job_display_id (int)
- Return type:
- add_comment(job_display_id, on_hold_id, *, data)[source]
Append a comment to an on-hold record.
Request model:
OnHoldCommentRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/on_hold.add_comment.html Request model: OnHoldCommentRequest Response model: OnHoldNoteDetails
- Parameters:
job_display_id (int)
on_hold_id (str)
data (OnHoldCommentRequest | dict)
- Return type:
- update_dates(job_display_id, on_hold_id, *, data)[source]
Update follow-up / due dates on an on-hold record.
Request model:
SaveOnHoldDatesModel.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/on_hold.update_dates.html Request model: SaveOnHoldDatesModel
- Parameters:
job_display_id (int)
on_hold_id (str)
data (SaveOnHoldDatesModel | dict)
- Return type:
None
- resolve(job_display_id, on_hold_id, *, data)[source]
Resolve an on-hold record.
Request model:
SaveOnHoldRequest(resolve shares the same swagger schema as create/update; populateresolved_code_idand/orresolved_dateto record the outcome).Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/on_hold.resolve.html Request model: SaveOnHoldRequest Response model: ResolveJobOnHoldResponse
- Parameters:
job_display_id (int)
on_hold_id (str)
data (SaveOnHoldRequest | dict)
- Return type:
- class ab.api.endpoints.jobs.form.JobFormEndpoint(client)[source]
Job-scoped form generation (ACPortal API).
Most methods return
{filename: bytes}(PDF content). Useshipments()to get JSON shipment plan data for BOL selection.- Parameters:
client (HttpClient)
- shipments(job_display_id)[source]
List shipment plans for job_display_id (
GET /job/{jobDisplayId}/form/shipments).Returns
List[FormsShipmentPlan]rather than PDF bytes – use thejob_shipment_idof a plan to drive the BOL routes below.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/form.shipments.html Response model: List[FormsShipmentPlan]
- Parameters:
job_display_id (int)
- Return type:
- bill_of_lading(job_display_id, *, shipment_plan_id=None, provider_option_index=None)[source]
GET /job/{jobDisplayId}/form/bill-of-lading
- packaging_labels(job_display_id, *, shipment_plan_id=None)[source]
GET /job/{jobDisplayId}/form/packaging-labels
- packaging_specification(job_display_id)[source]
GET /job/{jobDisplayId}/form/packaging-specification
- credit_card_authorization(job_display_id)[source]
GET /job/{jobDisplayId}/form/credit-card-authorization
- ops(job_display_id, *, ops_type=None)[source]
Alias for
operations()that prefixes the PDF filename withops_.
- class ab.api.endpoints.jobs.timeline.JobTimelineEndpoint(client)[source]
Job-scoped timeline operations (ACPortal API).
- Parameters:
client (HttpClient)
- response(job_display_id)[source]
GET /job/{jobDisplayId}/timeline— full wrapper response.Returns
TimelineResponsewith tasks, status metadata, SLA info, and on-hold entries.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/timeline.response.html Response model: TimelineResponse
- Parameters:
job_display_id (int)
- Return type:
- list(job_display_id)[source]
GET /job/{jobDisplayId}/timeline— convenience returning just tasks.- Parameters:
job_display_id (int)
- Return type:
- create_task(job_display_id, *, data, create_email=None)[source]
POST /job/{jobDisplayId}/timeline— create or update a task.- Parameters:
job_display_id (int) – Job display ID.
data (BaseTimelineTaskRequest | dict) – Task request model instance or dict with
taskCodeand task-code-specific fields.create_email (bool | None) – Send status notification email (query param).
- Return type:
Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/timeline.create_task.html Query params: TimelineCreateParams Response model: TimelineSaveResponse
- get_task(job_display_id, task_id)[source]
GET /job/{jobDisplayId}/timeline/{timelineTaskIdentifier}Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/timeline.get_task.html Response model: TimelineTask
- Parameters:
- Return type:
- update_task(job_display_id, task_id, *, data)[source]
PATCH /job/{jobDisplayId}/timeline/{timelineTaskId}Request model:
TimelineTaskUpdateRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/timeline.update_task.html Request model: TimelineTaskUpdateRequest Response model: TimelineTask
- Parameters:
job_display_id (int)
task_id (str)
data (TimelineTaskUpdateRequest | dict)
- Return type:
- delete_task(job_display_id, task_id)[source]
DELETE /job/{jobDisplayId}/timeline/{timelineTaskId}Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/timeline.delete_task.html Response model: ServiceBaseResponse
- Parameters:
- Return type:
- get_agent(job_display_id, task_code)[source]
GET /job/{jobDisplayId}/timeline/{taskCode}/agentReturns
Nonewhen no agent is assigned for the given task code.- Parameters:
- Return type:
TimelineAgent | None
- increment_status(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/timeline/incrementjobstatusDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/timeline.increment_status.html Request model: IncrementStatusRequest Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
data (IncrementStatusRequest | dict)
- Return type:
- undo_increment_status(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/timeline/undoincrementjobstatusDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/timeline.undo_increment_status.html Request model: IncrementStatusRequest Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
data (IncrementStatusRequest | dict)
- Return type:
- class ab.api.endpoints.jobs.email.JobEmailEndpoint(client)[source]
Job-scoped email operations (ACPortal API).
- Parameters:
client (HttpClient)
- send(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/emailDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/email.send.html Request model: SendEmailRequest
- Parameters:
job_display_id (int)
data (SendEmailRequest | dict)
- Return type:
None
- send_document(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/email/senddocumentDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/email.send_document.html Request model: SendDocumentEmailModel
- Parameters:
job_display_id (int)
data (SendDocumentEmailModel | dict)
- Return type:
None
- create_transactional(job_display_id)[source]
POST /job/{jobDisplayId}/email/createtransactionalemailDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/email.create_transactional.html
- Parameters:
job_display_id (int)
- Return type:
None
- send_template(job_display_id, template_guid)[source]
POST /job/{jobDisplayId}/email/{emailTemplateGuid}/sendDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/email.send_template.html
- class ab.api.endpoints.jobs.sms.JobSmsEndpoint(client)[source]
Job-scoped SMS operations (ACPortal API).
- Parameters:
client (HttpClient)
- list(job_display_id)[source]
GET /job/{jobDisplayId}/smsDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/sms.list.html
- Parameters:
job_display_id (int)
- Return type:
None
- send(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/smsDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/sms.send.html Request model: SendSMSModel
- Parameters:
job_display_id (int)
data (SendSMSModel | dict)
- Return type:
None
- mark_read(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/sms/readDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/sms.mark_read.html Request model: MarkSmsAsReadModel
- Parameters:
job_display_id (int)
data (MarkSmsAsReadModel | dict)
- Return type:
None
- get_template(job_display_id, template_id)[source]
GET /job/{jobDisplayId}/sms/templatebased/{templateId}Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/sms.get_template.html
- class ab.api.endpoints.jobs.freight_providers.JobFreightProvidersEndpoint(client)[source]
Job-scoped freight-provider operations (ACPortal API).
- Parameters:
client (HttpClient)
- list(job_display_id, *, provider_indexes=None, shipment_types=None, only_active=None)[source]
GET /job/{jobDisplayId}/freightprovidersDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/freight_providers.list.html Query params: FreightProvidersParams Response model: List[PricedFreightProvider]
- save(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/freightprovidersRequest model:
ShipmentPlanProvider.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/freight_providers.save.html Request model: ShipmentPlanProvider
- Parameters:
job_display_id (int)
data (ShipmentPlanProvider | dict)
- Return type:
None
- rate_quote(job_display_id, option_index, *, data)[source]
POST /job/{jobDisplayId}/freightproviders/{optionIndex}/ratequoteRequest model:
RateQuoteRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/freight_providers.rate_quote.html Request model: RateQuoteRequest
- Parameters:
job_display_id (int)
option_index (int)
data (RateQuoteRequest | dict)
- Return type:
None
- class ab.api.endpoints.jobs.parcel_items.JobParcelItemsEndpoint(client)[source]
Job-scoped parcel-item operations (ACPortal API).
- Parameters:
client (HttpClient)
- list(job_display_id)[source]
GET /job/{jobDisplayId}/parcelitemsDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/parcel_items.list.html Response model: List[ParcelItem]
- Parameters:
job_display_id (int)
- Return type:
- create(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/parcelitemsRequest model:
ParcelItemCreateRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/parcel_items.create.html Request model: ParcelItemCreateRequest Response model: ParcelItem
- Parameters:
job_display_id (int)
data (ParcelItemCreateRequest | dict)
- Return type:
- delete(job_display_id, parcel_item_id)[source]
DELETE /job/{jobDisplayId}/parcelitems/{parcelItemId}Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/parcel_items.delete.html Response model: ServiceBaseResponse
- Parameters:
- Return type:
- list_with_materials(job_display_id)[source]
GET /job/{jobDisplayId}/parcel-items-with-materialsDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/parcel_items.list_with_materials.html Response model: List[ParcelItemWithMaterials]
- Parameters:
job_display_id (int)
- Return type:
- class ab.api.endpoints.jobs.tracking.JobTrackingEndpoint(client)[source]
Job-scoped tracking operations (ACPortal API).
- Parameters:
client (HttpClient)
- get(job_display_id)[source]
GET /job/{jobDisplayId}/trackingDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/tracking.get.html Response model: TrackingInfo
- Parameters:
job_display_id (int)
- Return type:
- v3(job_display_id, history_amount=10)[source]
GET /v3/job/{jobDisplayId}/tracking/{historyAmount}Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/tracking.v3.html Path params: TrackingV3Params Response model: TrackingInfoV3
- Parameters:
- Return type:
- class ab.api.endpoints.jobs.status.JobStatusEndpoint(client)[source]
Job-scoped status operations (ACPortal API).
- Parameters:
client (HttpClient)
- set_quote(job_display_id)[source]
POST /job/{jobDisplayId}/status/quoteDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/status.set_quote.html Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
- Return type:
- class ab.api.endpoints.jobs.payment.JobPaymentEndpoint(client)[source]
Job-scoped payment operations (ACPortal API).
- Parameters:
client (HttpClient)
- get(job_display_id)[source]
GET /job/{jobDisplayId}/paymentDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/payment.get.html Query params: PaymentParams Response model: PaymentInfo
- Parameters:
job_display_id (int)
- Return type:
- get_create(job_display_id)[source]
GET /job/{jobDisplayId}/payment/createDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/payment.get_create.html Response model: PaymentInfo
- Parameters:
job_display_id (int)
- Return type:
- get_sources(job_display_id)[source]
GET /job/{jobDisplayId}/payment/sourcesDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/payment.get_sources.html Response model: List[PaymentSource]
- Parameters:
job_display_id (int)
- Return type:
- pay_by_source(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/payment/bysourceRequest model:
PayBySourceRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/payment.pay_by_source.html Request model: PayBySourceRequest Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
data (PayBySourceRequest | dict)
- Return type:
- create_ach_session(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/payment/ACHPaymentSessionDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/payment.create_ach_session.html Request model: ACHSessionRequest Response model: ACHSessionResponse
- Parameters:
job_display_id (int)
data (ACHSessionRequest | dict)
- Return type:
- ach_credit_transfer(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/payment/ACHCreditTransferDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/payment.ach_credit_transfer.html Request model: ACHCreditTransferRequest Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
data (ACHCreditTransferRequest | dict)
- Return type:
- attach_customer_bank(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/payment/attachCustomerBankDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/payment.attach_customer_bank.html Request model: AttachBankRequest Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
data (AttachBankRequest | dict)
- Return type:
- verify_ach_source(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/payment/verifyJobACHSourceDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/payment.verify_ach_source.html Request model: VerifyACHRequest Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
data (VerifyACHRequest | dict)
- Return type:
- cancel_ach_verification(job_display_id)[source]
POST /job/{jobDisplayId}/payment/cancelJobACHVerificationDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/payment.cancel_ach_verification.html Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
- Return type:
- set_bank_source(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/payment/banksourceDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/payment.set_bank_source.html Request model: BankSourceRequest Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
data (BankSourceRequest | dict)
- Return type:
- class ab.api.endpoints.jobs.shipment.JobShipmentEndpoint(client)[source]
Job-scoped shipment operations (ACPortal API).
- Parameters:
client (HttpClient)
- get_rate_quotes(job_display_id)[source]
GET /job/{jobDisplayId}/shipment/ratequotesDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/shipment.get_rate_quotes.html Query params: RateQuotesParams Response model: List[RateQuote]
- request_rate_quotes(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/shipment/ratequotesRequest model:
ShipmentRateQuoteRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/shipment.request_rate_quotes.html Request model: ShipmentRateQuoteRequest Response model: List[RateQuote]
- Parameters:
job_display_id (int)
data (ShipmentRateQuoteRequest | dict)
- Return type:
- book(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/shipment/bookRequest model:
ShipmentBookRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/shipment.book.html Request model: ShipmentBookRequest Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
data (ShipmentBookRequest | dict)
- Return type:
- delete(job_display_id)[source]
DELETE /job/{jobDisplayId}/shipmentDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/shipment.delete.html Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
- Return type:
- get_accessorials(job_display_id)[source]
GET /job/{jobDisplayId}/shipment/accessorialsDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/shipment.get_accessorials.html Response model: List[Accessorial]
- Parameters:
job_display_id (int)
- Return type:
- add_accessorial(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/shipment/accessorialRequest model:
AccessorialAddRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/shipment.add_accessorial.html Request model: AccessorialAddRequest Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
data (AccessorialAddRequest | dict)
- Return type:
- remove_accessorial(job_display_id, add_on_id)[source]
DELETE /job/{jobDisplayId}/shipment/accessorial/{addOnId}Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/shipment.remove_accessorial.html Response model: ServiceBaseResponse
- Parameters:
- Return type:
- get_origin_destination(job_display_id)[source]
GET /job/{jobDisplayId}/shipment/origindestinationDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/shipment.get_origin_destination.html Response model: ShipmentOriginDestination
- Parameters:
job_display_id (int)
- Return type:
- get_export_data(job_display_id)[source]
GET /job/{jobDisplayId}/shipment/exportdataDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/shipment.get_export_data.html Response model: ShipmentExportData
- Parameters:
job_display_id (int)
- Return type:
- post_export_data(job_display_id, *, data)[source]
POST /job/{jobDisplayId}/shipment/exportdataRequest model:
ShipmentExportRequest.Docs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/shipment.post_export_data.html Request model: ShipmentExportRequest Response model: ServiceBaseResponse
- Parameters:
job_display_id (int)
data (ShipmentExportRequest | dict)
- Return type:
- get_rates_state(job_display_id)[source]
GET /job/{jobDisplayId}/shipment/ratesstateDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/shipment.get_rates_state.html Response model: RatesState
- Parameters:
job_display_id (int)
- Return type:
- class ab.api.endpoints.jobs.rfq.JobRfqEndpoint(client)[source]
Job-scoped RFQ operations (ACPortal API).
- Parameters:
client (HttpClient)
- list(job_display_id)[source]
GET /job/{jobDisplayId}/rfqDocs: https://ab-sdk.readthedocs.io/en/latest/api/jobs/rfq.list.html Query params: JobRfqListParams Response model: List[QuoteRequestDisplayInfo]
- Parameters:
job_display_id (int)
- Return type:
Endpoint Paths by Tag
Tag |
Method |
Path |
Description |
|---|---|---|---|
General |
POST |
|
Create a new job |
PUT |
|
Save/update a job |
|
GET |
|
Get job by display ID |
|
GET |
|
Search jobs via query params |
|
POST |
|
Search jobs by detail criteria |
|
GET |
|
Get job pricing |
|
GET |
|
Get calendar items |
|
GET |
|
Get update page config |
|
POST |
|
Update a job |
|
Timeline |
GET |
|
Get all timeline tasks |
POST |
|
Create or update a timeline task |
|
GET |
|
Get a single timeline task |
|
PATCH |
|
Update a timeline task |
|
DELETE |
|
Delete a timeline task |
|
GET |
|
Get agent for task code |
|
POST |
|
Increment job status |
|
POST |
|
Undo status increment |
|
Notes |
GET |
|
List job notes |
POST |
|
Create a note |
|
PUT |
|
Update a note |
|
Items |
GET |
|
List job items |
POST |
|
Add items |
|
DELETE |
|
Delete an item |
|
Freight |
GET |
|
List freight providers |
POST |
|
Get rate quote |
|
POST |
|
Add freight items |
|
Agent |
POST |
|
Change job agent |
Methods
create
POST /job (ACPortal) — Create a new job.
from ab import ABConnectAPI
api = ABConnectAPI(env="staging")
api.jobs.create({"companyId": "...", "contactId": "..."})
save
PUT /job/save (ACPortal) — Save/update a job.
api.jobs.save({"id": "...", "status": "Active"})
get
GET /job/{jobDisplayId} (ACPortal) — Get job by display ID.
Returns: Job
job = api.jobs.get(2000001)
search
GET /job/search (ACPortal) — Search jobs via query params.
Returns: list[JobSearchResult]`
results = api.jobs.search(status="Active")
search_by_details
POST /job/searchByDetails (ACPortal) — Search jobs by detail criteria.
Returns: list[JobSearchResult]`
results = api.jobs.search_by_details({"searchText": "test"})
get_price
GET /job/{jobDisplayId}/price (ACPortal) — Get job pricing.
Returns: JobPrice
price = api.jobs.get_price(2000001)
get_calendar_items
GET /job/{jobDisplayId}/calendaritems (ACPortal) — Get job calendar items.
Returns: list[CalendarItem]`
items = api.jobs.get_calendar_items(2000001)
get_update_page_config
GET /job/{jobDisplayId}/updatePageConfig (ACPortal) — Get job update page config.
Returns: JobUpdatePageConfig
config = api.jobs.get_update_page_config(2000001)
update
POST /job/update (ABC API) — Update a job via the ABC API surface.
api.jobs.update({"jobId": "...", "status": "Completed"})
Timeline Helpers
Access via api.jobs.tasks.*.
Timeline helpers provide a high-level workflow for advancing a job through
its lifecycle. Each helper fetches the current task state, carries forward
the server’s id and modifiedDate for optimistic concurrency, and
POSTs the update.
Workflow
A job progresses through these statuses:
Status 1 (Booked)
-> Status 2 (Scheduled) — schedule() / _2
-> Status 3 (Received) — received() / _3
-> Status 4 (Pack Start) — pack_start() / _4
-> Status 5 (Pack Finish) — pack_finish() / _5
-> Status 6 (Storage) — storage_begin() / _6, storage_end()
-> Status 7 (Carrier Sched) — carrier_schedule() / _7
-> Status 8 (Carrier PU) — carrier_pickup() / _8
-> Status 10 (Delivered) — carrier_delivery() / _10
Optimistic Concurrency (modifiedDate)
Every timeline task returned by the server includes a modifiedDate timestamp.
When a helper updates an existing task, it sends this timestamp back in the
POST payload. If another caller modified the task since you read it, the server
rejects the stale write with success=False. Check response.success after
every call.
Task Codes
Code |
Name |
Request Model |
Description |
|---|---|---|---|
|
Pickup |
Field operations (pickup/delivery) |
|
|
Packing |
Packaging with time log |
|
|
Storage |
Storage with time log |
|
|
Carrier |
Carrier schedule/pickup/delivery |
Delete Helpers
# Delete a specific task by code
api.jobs.tasks.delete(job_id, "PK")
# Delete all tasks in reverse order (CP -> ST -> PK -> PU)
api.jobs.tasks.delete_all(job_id)
schedule() / _2
Status 2 — Scheduled. Sets planned pickup dates on a PU task.
Model: InTheFieldTaskRequest
Fields populated: task_code="PU", planned_start_date, planned_end_date (optional)
Warning: Logs at status >= 2
resp = api.jobs.tasks.schedule(job_id, start="2024-06-01T11:00:00Z")
# or with alias:
resp = api.jobs.tasks._2(job_id, start="2024-06-01T11:00:00Z")
assert resp.success
print(resp.task.id) # server-assigned task ID
received() / _3
Status 3 — Received. Marks pickup completed on a PU task.
Model: InTheFieldTaskRequest
Fields populated: task_code="PU", completed_date, on_site_time_log (if start provided)
Warning: Logs at status >= 3
resp = api.jobs.tasks.received(job_id, end="2024-06-01T12:00:00Z")
# With on-site time tracking:
resp = api.jobs.tasks.received(
job_id,
"2024-06-01T11:00:00Z",
"2024-06-01T12:00:00Z",
)
# Equivalent keyword form:
resp = api.jobs.tasks.received(
job_id,
start="2024-06-01T11:00:00Z",
end="2024-06-01T12:00:00Z",
)
pack_start() / _4
Status 4 — Pack Start. Sets packaging start time on a PK task.
Model: SimpleTaskRequest
Fields populated: task_code="PK", time_log.start
Warning: Logs at status >= 4
resp = api.jobs.tasks.pack_start(job_id, start="2024-06-02T10:00:00Z")
pack_finish() / _5
Status 5 — Pack Finish. Sets packaging end time on a PK task.
Preserves the existing time_log.start from a prior pack_start() call.
Model: SimpleTaskRequest
Fields populated: task_code="PK", time_log.start (preserved), time_log.end
Warning: Logs at status >= 5
resp = api.jobs.tasks.pack_finish(job_id, end="2024-06-02T10:59:59Z")
storage_begin() / _6
Status 6 — Storage. Sets storage start time on an ST task.
Preserves existing time_log.end if present.
Model: SimpleTaskRequest
Fields populated: task_code="ST", time_log.start, time_log.end (preserved)
resp = api.jobs.tasks.storage_begin(job_id, start="2024-06-03T10:00:00Z")
storage_end()
Status 6 — Storage. Sets storage end time on an ST task.
Preserves existing time_log.start if present. No numeric alias.
Model: SimpleTaskRequest
Fields populated: task_code="ST", time_log.start (preserved), time_log.end
resp = api.jobs.tasks.storage_end(job_id, end="2024-06-03T10:59:59Z")
carrier_schedule() / _7
Status 7 — Carrier Scheduled. Sets carrier scheduled date on a CP task.
Model: CarrierTaskRequest
Fields populated: task_code="CP", scheduled_date
Warning: Logs at status >= 7
resp = api.jobs.tasks.carrier_schedule(job_id, start="2024-06-04T10:00:00Z")
carrier_pickup() / _8
Status 8 — Carrier Pickup. Sets carrier pickup completed date on a CP task.
Model: CarrierTaskRequest
Fields populated: task_code="CP", pickup_completed_date
Warning: Logs at status >= 8
resp = api.jobs.tasks.carrier_pickup(job_id, start="2024-06-04T10:59:59Z")
carrier_delivery() / _10
Status 10 — Delivered. Sets carrier delivery completed date on a CP task.
Model: CarrierTaskRequest
Fields populated: task_code="CP", delivery_completed_date
resp = api.jobs.tasks.carrier_delivery(job_id, end="2024-06-05T11:00:00Z")