Jobs

Jobs represent a job in the system. A job is a task that needs to be done. It can be a translation, a review, a DTP, etc.

The job object

Properties

  • idstring

    Unique identifier for the object.

  • namestring

    The name of the job.

  • additionalInfostring

    Any additional information about the job that needs to be displayed on the quote or invoice.

  • applyMinimumFeeboolean

    True if the minimum fee is applied.

  • archiveboolean

    True if the entity is archived.

  • clientobject

    The client.
  • customStatusobject

    The custom status of the job, if it has one. A custom status belongs to one of the statuses of the job and is only available with a Plus, Premium or Team subscription.
  • deliveryDatedate

    The delivery date.

  • discountnumber

    The discount (min -1, max 1).

  • domainobject

    The domain of expertise.
  • dueDatedate

    The due date.

  • estimationembedded

    The estimation of the job. This estimation is based on the job details and the pricing rules. If there is an invoice linked to the job, the estimation will be updated with the invoiced amount.

  • externalReferencestring

    The external reference.

  • extraChargeobject

    The extra charge applied to the job.

  • filesarray

    The files.
  • fixedPriceobject

    The fixed price of the job (if any).

  • groupobject

    The group the job is part of.

  • labelsarray

    The labels.
  • languagePairobject

    The language pair.
  • nonBillableboolean

    True if the job is not billable.

  • notesarray

    The notes linked to the entity.
  • outsourcingarray

    The outsourcing details of the job.

  • pinnedboolean

    True if the entity is pinned.

  • progressnumber

    The progress of the job (a percentage value with min 0 and max 100).

  • purchaseOrderstring

    The purchase order.

  • quantityobject

    The quantity of the job.

  • quantityTypeobject

    The quantity type.
  • serviceobject

    The service.
  • startDatedate

    The start date.

  • statusnumber

    The status of the job. Valid values are: 1 (not started), 2 (in progress), 3 (finished), 4 (invoiced), 5 (cancelled), 6 (on hold).

  • timeBasedInvoiceboolean

    True if the job is time based.

  • timeTrackersobject

    The time trackers.

  • userobject

    The user responsible for the job.

  • createdAtdate

    The date and time the entity was created.

  • updatedAtdate

    The date and time the entity was last updated.

Job object

{
  "id": "6703a087b041fd94bf3a31cb",
  "name": "Demo job",
  "additionalInfo": null,
  "applyMinimumFee": true,
  "archive": false,
  "client": {
    "id": "66f1313f9e477f90664d1ad8",
    "name": "Google"
  },
  "discount": 0,
  "dueDate": "2024-10-07T09:00:00.000Z",
  "estimation": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    },
    "details": {
      "currency": {
        "code": "EUR",
        "symbol": "€"
      },
      "discount": {
        "amount": 0,
        "value": 0
      },
      "extraCharge": {
        "amount": 0,
        "percentage": 0,
        "type": "percentage"
      },
      "matches": [],
      "minimumFeeApplied": false,
      "quantity": {
        "quantityType": {
          "id": "6548c16d5136b418fd626e61",
          "name": "Words"
        },
        "value": 1500
      },
      "service": {
        "id": "6548c16d5136b418fd626e5f",
        "name": "Translation"
      },
      "subtotal": 240,
      "total": 240,
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 240,
          "discount": 0,
          "total": 240
        },
        "total": 240
      },
      "unitCost": 0.16
    },
    "isV2": true,
    "outsourcing": {
      "suppliers": [],
      "totals": []
    },
    "performance": {
      "status": "incorrectStatus"
    },
    "profitability": {
      "status": "incorrectStatus",
      "withMargin": {
        "status": "incorrectStatus"
      }
    },
    "total": 240,
    "totalInvoiced": null,
    "type": "estimation"
  },
  "externalReference": "test",
  "extraCharge": {
    "amount": 0,
    "percentage": 0,
    "type": "percentage"
  },
  "files": [],
  "fixedPrice": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    }
  },
  "isV2": true,
  "labels": [],
  "nonBillable": false,
  "notes": [],
  "object": "job",
  "outsourcing": [],
  "pinned": false,
  "progress": 0,
  "quantity": {
    "catFile": {
      "fileIds": []
    },
    "hasMatches": false,
    "matches": [],
    "matchesType": "fixed",
    "timeBasedUnitCost": 80,
    "timeBasedUnitCostPriceReference": {
      "id": "6576bca2968e7bd0d1c08663",
      "type": "account"
    },
    "unitCost": 0.16,
    "unitCostPriceReference": {
      "id": "6548c1965136b418fd626e83",
      "type": "account"
    },
    "value": 1500
  },
  "quantityType": {
    "id": "6548c16d5136b418fd626e61",
    "name": "Words"
  },
  "service": {
    "id": "6548c16d5136b418fd626e5f",
    "name": "Translation"
  },
  "startDate": null,
  "status": 1,
  "timeBasedInvoice": false,
  "timeTrackers": {
    "duration": 0,
    "list": [],
    "running": false
  },
  "user": {
    "id": "6548c11c5136b418fd626e2f",
    "name": "Cédric Doe"
  },
  "createdAt": "2024-10-07T08:49:11.735Z",
  "updatedAt": "2024-10-07T08:49:11.812Z"
}

GET/v2/jobs

List all jobs

This endpoint allows you to retrieve all the jobs. This endpoint is paginated.

Filters

All the filters are optional and can be combined. See Pagination for the rules shared by all the list endpoints (multiple values, dates, keywords).

  • idstring

    Comma-separated list of job ids.

  • statusstring

    Comma-separated list of statuses. Each value is a status of the job (1 (not started), 2 (in progress), 3 (finished), 4 (invoiced), 5 (cancelled), 6 (on hold)) or the id of a custom status.

  • supplierStatusstring

    Comma-separated list of outsourcing statuses (1 (not started), 2 (in progress), 3 (to be reviewed), 4 (finished), 5 (cancelled), 6 (on hold)) or custom status ids. Only the jobs that have an outsourcing in one of these statuses are returned.

  • portalStatusstring

    Comma-separated list of supplier portal confirmation statuses of the outsourcing: 1 (pending), 2 (accepted), 3 (rejected).

  • namestring

    Only the jobs whose name contains this text (not case sensitive).

  • externalReferencestring

    Only the jobs whose external reference contains this text (not case sensitive).

  • purchaseOrderstring

    Only the jobs whose purchase order contains this text (not case sensitive).

  • additionalInfostring

    Only the jobs whose additional information contains this text (not case sensitive).

  • service.idstring

    Comma-separated list of service ids.

  • quantityType.idstring

    Comma-separated list of unit ids.

  • domain.idstring

    Comma-separated list of domain of expertise ids.

  • languagePair.idstring

    Comma-separated list of language pair ids.

  • client.idstring

    Comma-separated list of client ids.

  • client.projectManager.idstring

    Comma-separated list of user ids. Only the jobs whose project manager is one of these users are returned.

  • projectManager.idstring

    Comma-separated list of user ids. Only the jobs of the clients managed by these users (project managers) are returned.

  • user.idstring

    Comma-separated list of owner (user) ids.

  • groupstring

    Comma-separated list of group ids.

  • labels.idstring

    Comma-separated list of label ids. The jobs that have at least one of these labels are returned (see labels.all).

  • labels.allboolean

    Set to true to return only the jobs that have all the labels of labels.id.

  • outsourcing.supplier.idstring

    Comma-separated list of supplier ids. Only the jobs that have an outsourcing with one of these suppliers are returned.

  • outsourcing.service.idstring

    Comma-separated list of service ids. Only the jobs that have an outsourcing for one of these services are returned.

  • outsourcing.quantityType.idstring

    Comma-separated list of unit ids. Only the jobs that have an outsourcing in one of these units are returned.

  • outsourcing.languagePair.idstring

    Comma-separated list of language pair ids. Only the jobs that have an outsourcing for one of these language pairs are returned.

  • archiveboolean

    true to retrieve only the archived jobs, false to exclude them. If not provided, both are returned.

  • nonBillableboolean

    true to retrieve only the jobs that are not billable.

  • outsourcing.portal.confirm.enabledboolean

    true to retrieve only the jobs that have an outsourcing waiting for a confirmation on the supplier portal.

  • dueDateFromdate

    Only the jobs whose due date is on or after this date (ISO 8601).

  • dueDateTodate

    Only the jobs whose due date is before this date (ISO 8601).

  • startDateFromdate

    Only the jobs whose start date is on or after this date (ISO 8601).

  • startDateTodate

    Only the jobs whose start date is before this date (ISO 8601).

  • deliveryDateFromdate

    Only the jobs whose delivery date is on or after this date (ISO 8601).

  • deliveryDateTodate

    Only the jobs whose delivery date is before this date (ISO 8601).

  • outsourcingDueDateFromdate

    Only the jobs whose outsourcing due date is on or after this date (ISO 8601).

  • outsourcingDueDateTodate

    Only the jobs whose outsourcing due date is before this date (ISO 8601).

  • timeTrackerFromdate

    Only the jobs whose time tracker start date is on or after this date (ISO 8601).

  • timeTrackerTodate

    Only the jobs whose time tracker start date is before this date (ISO 8601).

  • currencystring

    The currency code (ISO, e.g., EUR) of the fixed price of the jobs.

  • parentstring

    If provided (with any value), only the jobs that have a parent job in their group are returned.

Sorting

  • sortstring

    The field to sort by. One of: name, service.name, dueDate, externalReference, user.name, status, client.name, purchaseOrder, startDate, estimation.total. The default is dueDate.

  • directionstring

    The sort direction: asc or desc. The default is desc.

Request

GET
/v2/jobs
curl -G https://api.lsp.expert/v2/jobs \
  -u {key}: 

Response

{
  "items": [
    {
      "id": "6703a087b041fd94bf3a31cb",
      "name": "Demo job",
      "additionalInfo": null,
      "applyMinimumFee": true,
      "archive": false,
      "client": {
        "id": "66f1313f9e477f90664d1ad8",
        "name": "Google"
      },
      "discount": 0,
      "dueDate": "2024-10-07T09:00:00.000Z",
      "estimation": {
        "currency": {
          "code": "EUR",
          "symbol": "€"
        },
        "details": {
          "currency": {
            "code": "EUR",
            "symbol": "€"
          },
          "discount": {
            "amount": 0,
            "value": 0
          },
          "extraCharge": {
            "amount": 0,
            "percentage": 0,
            "type": "percentage"
          },
          "matches": [],
          "minimumFeeApplied": false,
          "quantity": {
            "quantityType": {
              "id": "6548c16d5136b418fd626e61",
              "name": "Words"
            },
            "value": 1500
          },
          "service": {
            "id": "6548c16d5136b418fd626e5f",
            "name": "Translation"
          },
          "subtotal": 240,
          "total": 240,
          "totalDetails": {
            "extraCharge": {
              "amount": 0,
              "discount": 0,
              "total": 0
            },
            "subtotal": {
              "amount": 240,
              "discount": 0,
              "total": 240
            },
            "total": 240
          },
          "unitCost": 0.16
        },
        "isV2": true,
        "outsourcing": {
          "suppliers": [],
          "totals": []
        },
        "performance": {
          "status": "incorrectStatus"
        },
        "profitability": {
          "status": "incorrectStatus",
          "withMargin": {
            "status": "incorrectStatus"
          }
        },
        "total": 240,
        "totalInvoiced": null,
        "type": "estimation"
      },
      "externalReference": "test",
      "extraCharge": {
        "amount": 0,
        "percentage": 0,
        "type": "percentage"
      },
      "files": [],
      "fixedPrice": {
        "currency": {
          "code": "EUR",
          "symbol": "€"
        }
      },
      "isV2": true,
      "labels": [],
      "nonBillable": false,
      "notes": [],
      "object": "job",
      "outsourcing": [],
      "pinned": false,
      "progress": 0,
      "quantity": {
        "catFile": {
          "fileIds": []
        },
        "hasMatches": false,
        "matches": [],
        "matchesType": "fixed",
        "timeBasedUnitCost": 80,
        "timeBasedUnitCostPriceReference": {
          "id": "6576bca2968e7bd0d1c08663",
          "type": "account"
        },
        "unitCost": 0.16,
        "unitCostPriceReference": {
          "id": "6548c1965136b418fd626e83",
          "type": "account"
        },
        "value": 1500
      },
      "quantityType": {
        "id": "6548c16d5136b418fd626e61",
        "name": "Words"
      },
      "service": {
        "id": "6548c16d5136b418fd626e5f",
        "name": "Translation"
      },
      "startDate": null,
      "status": 1,
      "timeBasedInvoice": false,
      "timeTrackers": {
        "duration": 0,
        "list": [],
        "running": false
      },
      "user": {
        "id": "6548c11c5136b418fd626e2f",
        "name": "Cédric Doe"
      },
      "createdAt": "2024-10-07T08:49:11.735Z",
      "updatedAt": "2024-10-07T08:49:11.812Z"
    },
    {...},
    {...}
  ],
  "pageSize": 20,
  "page": 1,
  "totalPages": 1,
  "totalItems": 2,
  "hasNextPage": false,
  "hasPreviousPage": false
}


POST/v2/jobs

Create a job

This endpoint allows you to add a new job.

Parameters

  • namestring Required

    The name of the job.

  • additionalInfostring,null

    Any additional information about the job that you want to display on the quote or invoice.

  • clientstring Required

    The client id.

  • currencystring

    The currency code (ISO, e.g., EUR).

  • domainstring,null

    The domain of expertise id.

  • dueDatestring,null

    The due date of the job.

  • externalReferencestring,null

    The external reference of the job.

  • fixedPricenumber

    The fixed price of the job.

  • languagePairstring

    The language pair id.

  • nonBillableboolean

    True if the job is non billable.

  • projectManagerstring,null

    The project manager id.

  • purchaseOrderstring,null

    The purchase order.

  • quantitynumber Required

    The quantity of the job.

  • quantityTypestring Required

    The quantity type id.

  • servicestring Required

    The service id.

  • startDatestring,null

    The start date of the job.

  • timeBasedInvoiceboolean,null

    True if the job is time based.

Request

POST
/v2/jobs
curl https://api.lsp.expert/v2/jobs \
  -u {key}: \
  -d client="568bdb3b96fd75ea201566de" \
  -d name="Demo job" \
  -d quantity=1000 \
  -d quantityType="58942d4e429f6a1d362510dd" \
  -d service="64a3c119e205247c4f720eca" \
  -d languagePair="63e118cfa50b6659a44ad174" \
  -d dueDate="2024-10-07T12:00:00.000Z" \
  -d currency="EUR"

Response

{
"id": "6703c3db1efed1712305bc4e",
"name": "Demo job",
"additionalInfo": null,
"applyMinimumFee": true,
"archive": false,
"client": {
  "id": "568bdb3b96fd75ea201566de",
  "name": "Linguition"
},
"discount": 0,
"dueDate": "2024-10-07T12:00:00.000Z",
"estimation": {
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "details": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    },
    "discount": {
      "amount": 0,
      "value": 0
    },
    "extraCharge": {
      "amount": 0,
      "percentage": 0,
      "type": "percentage"
    },
    "matches": [],
    "minimumFeeApplied": false,
    "quantity": {
      "quantityType": {
        "id": "58942d4e429f6a1d362510dd",
        "name": "Words"
      },
      "value": 1000
    },
    "service": {
      "id": "64a3c119e205247c4f720eca",
      "name": "Translation"
    },
    "subtotal": 120,
    "total": 120,
    "totalDetails": {
      "extraCharge": {
        "amount": 0,
        "discount": 0,
        "total": 0
      },
      "subtotal": {
        "amount": 120,
        "discount": 0,
        "total": 120
      },
      "total": 120
    },
    "unitCost": 0.12
  },
  "isV2": true,
  "outsourcing": {
    "suppliers": [],
    "totals": []
  },
  "performance": {
    "status": "incorrectStatus"
  },
  "profitability": {
    "status": "incorrectStatus",
    "withMargin": {
      "status": "incorrectStatus"
    }
  },
  "total": 120,
  "totalInvoiced": null,
  "type": "estimation"
},
"externalReference": "2024-07-003",
"extraCharge": {
  "amount": 0,
  "percentage": 0,
  "type": "percentage"
},
"files": [],
"fixedPrice": {
  "currency": {
    "code": "EUR",
    "symbol": "€"
  }
},
"isV2": true,
"labels": [],
"languagePair": {
  "id": "63e118cfa50b6659a44ad174",
  "bidirectional": false,
  "source": {
    "name": "English",
    "code": "en"
  },
  "target": {
    "name": "French",
    "code": "fr"
  }
},
"nonBillable": false,
"notes": [],
"object": "job",
"outsourcing": [],
"pinned": false,
"progress": 0,
"quantity": {
  "catFile": {
    "fileIds": []
  },
  "hasMatches": false,
  "matches": [],
  "matchesType": "fixed",
  "timeBasedUnitCost": 0,
  "unitCost": 0.12,
  "unitCostPriceReference": {
    "id": "64a3c1315c27ec2b64add6a4",
    "type": "client"
  },
  "value": 1000
},
"quantityType": {
  "id": "58942d4e429f6a1d362510dd",
  "name": "Words"
},
"service": {
  "id": "64a3c119e205247c4f720eca",
  "name": "Translation"
},
"startDate": null,
"status": 1,
"timeBasedInvoice": false,
"timeTrackers": {
  "duration": 0,
  "list": [],
  "running": false
},
"user": {
  "id": "568bd2f12028fde918f9a80b",
  "name": "Cédric Doe"
},
"createdAt": "2024-10-07T11:19:55.235Z",
"updatedAt": "2024-10-07T11:19:55.371Z"
}

GET/v2/jobs/:id

Retrieve a job

This endpoint allows you to retrieve a job by providing their id.

Request

GET
/v2/jobs/:id
curl https://api.lsp.expert/v2/jobs/6703c3db1efed1712305bc4e \
  -u {key}:

Response

   {
    "id": "6703c3db1efed1712305bc4e",
    "name": "Demo job",
    "additionalInfo": null,
    "applyMinimumFee": true,
    "archive": false,
    "client": {
      "id": "568bdb3b96fd75ea201566de",
      "name": "Linguition"
    },
    "discount": 0,
    "dueDate": "2024-10-07T12:00:00.000Z",
    "estimation": {
      "currency": {
        "code": "EUR",
        "symbol": "€"
      },
      "details": {
        "currency": {
          "code": "EUR",
          "symbol": "€"
        },
        "discount": {
          "amount": 0,
          "value": 0
        },
        "extraCharge": {
          "amount": 0,
          "percentage": 0,
          "type": "percentage"
        },
        "matches": [],
        "minimumFeeApplied": false,
        "quantity": {
          "quantityType": {
            "id": "58942d4e429f6a1d362510dd",
            "name": "Words"
          },
          "value": 1000
        },
        "service": {
          "id": "64a3c119e205247c4f720eca",
          "name": "Translation"
        },
        "subtotal": 120,
        "total": 120,
        "totalDetails": {
          "extraCharge": {
            "amount": 0,
            "discount": 0,
            "total": 0
          },
          "subtotal": {
            "amount": 120,
            "discount": 0,
            "total": 120
          },
          "total": 120
        },
        "unitCost": 0.12
      },
      "isV2": true,
      "outsourcing": {
        "suppliers": [],
        "totals": []
      },
      "performance": {
        "status": "incorrectStatus"
      },
      "profitability": {
        "status": "incorrectStatus",
        "withMargin": {
          "status": "incorrectStatus"
        }
      },
      "total": 120,
      "totalInvoiced": null,
      "type": "estimation"
    },
    "externalReference": "2024-07-003",
    "extraCharge": {
      "amount": 0,
      "percentage": 0,
      "type": "percentage"
    },
    "files": [],
    "fixedPrice": {
      "currency": {
        "code": "EUR",
        "symbol": "€"
      }
    },
    "isV2": true,
    "labels": [],
    "languagePair": {
      "id": "63e118cfa50b6659a44ad174",
      "bidirectional": false,
      "source": {
        "name": "English",
        "code": "en"
      },
      "target": {
        "name": "French",
        "code": "fr"
      }
    },
    "nonBillable": false,
    "notes": [],
    "object": "job",
    "outsourcing": [],
    "pinned": false,
    "progress": 0,
    "quantity": {
      "catFile": {
        "fileIds": []
      },
      "hasMatches": false,
      "matches": [],
      "matchesType": "fixed",
      "timeBasedUnitCost": 0,
      "unitCost": 0.12,
      "unitCostPriceReference": {
        "id": "64a3c1315c27ec2b64add6a4",
        "type": "client"
      },
      "value": 1000
    },
    "quantityType": {
      "id": "58942d4e429f6a1d362510dd",
      "name": "Words"
    },
    "service": {
      "id": "64a3c119e205247c4f720eca",
      "name": "Translation"
    },
    "startDate": null,
    "status": 1,
    "timeBasedInvoice": false,
    "timeTrackers": {
      "duration": 0,
      "list": [],
      "running": false
    },
    "user": {
      "id": "568bd2f12028fde918f9a80b",
      "name": "Cédric Doe"
    },
    "createdAt": "2024-10-07T11:19:55.235Z",
    "updatedAt": "2024-10-07T11:19:55.371Z"
  }


GET/v2/jobs/:id/prices

Retrieve all applicable prices

This endpoint allows you to retrieve all prices that are applicable to a job. This endpoint will return a list of client or account prices that can be used to calculate the cost of the job.

Query parameters

  • currencystring

    The currency code (ISO, e.g., EUR).

  • serviceIdstring

    The service id.

  • quantityTypeIdstring

    The quantity type id.

  • languagePairIdstring

    The language pair id.

  • domainIdstring

    The domain of expertise id.

  • isTimeBasedboolean

    True if the job is time based.

Request

GET
/v2/jobs/:id/prices?currency=EUR&quantityType=58942d4e429f6a1d362510dd&isTimeBased=0
curl https://api.lsp.expert/v2/jobs/6703c3db1efed1712305bc4e/prices \
  -u {key}:

Response

[{
  "id": "64a3c1315c27ec2b64add6a4",
  "currency": {
    "code": "EUR",
    "symbol": "€"
  },
  "matches": [],
  "matchesType": "fixed",
  "type": "client",
  "unitCost": 0.12
}]


PUT/v2/jobs/:id

Update a job

This endpoint allows you to perform an update on a job. Any parameters not provided will be left unchanged.

Parameters

  • namestring

    The name of the job.

  • additionalInfostring,null

    Any additional information about the job that you want to display on the quote or invoice.

  • archiveboolean

    True if the entity is archived.

  • clientstring

    The client id.

  • customStatusstring,null

    The id of a custom status, or null to remove the current one. Setting a custom status also sets the status of the job to the status the custom status belongs to, and it takes precedence over status if both are provided. If the job ends up in another status (for example because of an automatic rule), the custom status is removed. Custom statuses are only available with a Plus, Premium or Team subscription.

  • deliveryDatestring,null

    The delivery date.

  • domainstring,null

    The domain of expertise id.

  • dueDatestring,null

    The due date.

  • externalReferencestring

    The external reference.

  • languagePairstring,null

    The language pair id.

  • ownerstring

    The owner id.

  • pinnedboolean

    True if the entity is pinned.

  • progressnumber

    The progress of the entity.

  • projectManagerstring,null

    The project manager id.

  • purchaseOrderstring,null

    The purchase order.

  • quantitynumber

    The quantity.

  • quantityTypestring

    The quantity type id.

  • servicestring

    The service id.

  • startDatestring,null

    startDate

  • statusnumber

    One of the following value: 1 (not started), 2 (in progress), 3 (finished), 4 (invoiced), 5 (cancelled), 6 (on hold).

Request

PUT
/v2/jobs/:id
curl -X PUT https://api.lsp.expert/v2/jobs/6703c3db1efed1712305bc4e \
  -u {key}: \
  -d status=2
  -d progress=0.5

Response

{
  "id": "6703c3db1efed1712305bc4e",
  "name": "Demo job",
  "additionalInfo": null,
  "applyMinimumFee": true,
  "archive": false,
  "client": {
    "id": "568bdb3b96fd75ea201566de",
    "name": "Linguition"
  },
  "discount": 0,
  "dueDate": "2024-10-07T12:00:00.000Z",
  "estimation": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    },
    "details": {
      "currency": {
        "code": "EUR",
        "symbol": "€"
      },
      "discount": {
        "amount": 0,
        "value": 0
      },
      "extraCharge": {
        "amount": 0,
        "percentage": 0,
        "type": "percentage"
      },
      "matches": [],
      "minimumFeeApplied": false,
      "quantity": {
        "quantityType": {
          "id": "58942d4e429f6a1d362510dd",
          "name": "Words"
        },
        "value": 1000
      },
      "service": {
        "id": "64a3c119e205247c4f720eca",
        "name": "Translation"
      },
      "subtotal": 120,
      "total": 120,
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 120,
          "discount": 0,
          "total": 120
        },
        "total": 120
      },
      "unitCost": 0.12
    },
    "isV2": true,
    "outsourcing": {
      "suppliers": [],
      "totals": []
    },
    "performance": {
      "status": "incorrectStatus"
    },
    "profitability": {
      "status": "incorrectStatus",
      "withMargin": {
        "status": "incorrectStatus"
      }
    },
    "total": 120,
    "totalInvoiced": null,
    "type": "estimation"
  },
  "externalReference": "2024-07-003",
  "extraCharge": {
    "amount": 0,
    "percentage": 0,
    "type": "percentage"
  },
  "files": [],
  "fixedPrice": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    }
  },
  "isV2": true,
  "labels": [],
  "languagePair": {
    "id": "63e118cfa50b6659a44ad174",
    "bidirectional": false,
    "source": {
      "name": "English",
      "code": "en"
    },
    "target": {
      "name": "French",
      "code": "fr"
    }
  },
  "nonBillable": false,
  "notes": [],
  "object": "job",
  "outsourcing": [],
  "pinned": false,
  "progress": 0.5,
  "quantity": {
    "catFile": {
      "fileIds": []
    },
    "hasMatches": false,
    "matches": [],
    "matchesType": "fixed",
    "timeBasedUnitCost": 0,
    "unitCost": 0.12,
    "unitCostPriceReference": {
      "id": "64a3c1315c27ec2b64add6a4",
      "type": "client"
    },
    "value": 1000
  },
  "quantityType": {
    "id": "58942d4e429f6a1d362510dd",
    "name": "Words"
  },
  "service": {
    "id": "64a3c119e205247c4f720eca",
    "name": "Translation"
  },
  "startDate": null,
  "status": 2,
  "timeBasedInvoice": false,
  "timeTrackers": {
    "duration": 0,
    "list": [],
    "running": false
  },
  "user": {
    "id": "568bd2f12028fde918f9a80b",
    "name": "Cédric Doe"
  },
  "createdAt": "2024-10-07T11:19:55.235Z",
  "updatedAt": "2024-10-07T11:19:55.371Z"
}

PUT/v2/jobs/:id/price

Update the price

This endpoint allows you to perform an update on the price of a job. Any parameters not provided will be left unchanged.

Parameters

  • applyMinimumFeeboolean

    True if the minimum fee is applied.

  • convertTrackedTimesboolean

    True if you want to convert the tracked times into billable units (only applicable if the job is time based).

  • currencyCodestring

    The currency code (ISO, e.g., EUR).

  • discountnumber

    The discount.

  • extraChargeAmountnumber

    The extra charge amount.

  • extraChargeDescriptionstring,null

    The extra charge description.

  • extraChargePercentagenumber

    The extra charge percentage.

  • extraChargeTypestring

    One of the following value: amount, percentage.

  • fixedPricenumber,

    The fixed price.

  • matchesTypestring

    How the matches are calculated. Valid values are fixed or percentage.

  • nonBillableboolean

    True if the job is non billable.

  • pricestring

    The price id.

  • timeBasedInvoiceboolean,null

    True if the job is time based.

  • timeBasedUnitCostnumber

    The time based unit cost.

  • unitCostnumber

    The cost per unit.

Request

PUT
/v2/jobs/:id
curl -X PUT https://api.lsp.expert/v2/jobs/6703c3db1efed1712305bc4e/price \
  -u {key}: \
  -d discount=0.1

Response

{
  "id": "6703c3db1efed1712305bc4e",
  "name": "Demo job",
  "additionalInfo": null,
  "applyMinimumFee": true,
  "archive": false,
  "client": {
    "id": "568bdb3b96fd75ea201566de",
    "name": "Linguition"
  },
  "deliveryDate": null,
  "discount": 0.1,
  "dueDate": "2024-10-07T12:00:00.000Z",
  "estimation": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    },
    "details": {
      "currency": {
        "code": "EUR",
        "symbol": "€"
      },
      "discount": {
        "amount": 12,
        "value": 0.1
      },
      "extraCharge": {
        "amount": 0,
        "percentage": 0,
        "type": "percentage"
      },
      "matches": [
        {
          "discount": 12,
          "extraCharge": 0,
          "unitCost": 0.12,
          "quantity": 1000,
          "lineTotal": 108,
          "match": {
            "id": "56c1d755957bab182e818453",
            "name": "0%"
          },
          "id": "6703cb4a5d0425a497d50868"
        }
      ],
      "minimumFeeApplied": false,
      "quantity": {
        "quantityType": {
          "id": "58942d4e429f6a1d362510dd",
          "name": "Words"
        },
        "value": 1000
      },
      "service": {
        "id": "64a3c119e205247c4f720eca",
        "name": "Translation"
      },
      "subtotal": 120,
      "total": 108,
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 120,
          "discount": 12,
          "total": 108
        },
        "total": 108
      },
      "unitCost": 0.12
    },
    "isV2": true,
    "outsourcing": {
      "suppliers": [],
      "totals": []
    },
    "performance": {
      "status": "incorrectStatus"
    },
    "profitability": {
      "status": "incorrectStatus",
      "withMargin": {
        "status": "incorrectStatus"
      }
    },
    "total": 108,
    "totalInvoiced": null,
    "type": "estimation"
  },
  "externalReference": "2024-07-003",
  "extraCharge": {
    "amount": 0,
    "percentage": 0,
    "type": "percentage"
  },
  "files": [],
  "fixedPrice": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    }
  },
  "isV2": true,
  "labels": [],
  "languagePair": {
    "id": "63e118cfa50b6659a44ad174",
    "bidirectional": false,
    "source": {
      "name": "English",
      "code": "en"
    },
    "target": {
      "name": "French",
      "code": "fr"
    }
  },
  "nonBillable": false,
  "notes": [],
  "object": "job",
  "outsourcing": [],
  "pinned": false,
  "progress": 0,
  "quantity": {
    "catFile": {
      "fileIds": []
    },
    "hasMatches": false,
    "matches": [
      {
        "quantity": 1000,
        "percentage": 1,
        "unitCost": 0.12,
        "id": "56c1d755957bab182e818453",
        "name": "0%"
      }
    ],
    "matchesType": "fixed",
    "timeBasedUnitCost": 0,
    "unitCost": 0.12,
    "unitCostPriceReference": {
      "id": "64a3c1315c27ec2b64add6a4",
      "type": "client"
    },
    "value": 1000
  },
  "quantityType": {
    "id": "58942d4e429f6a1d362510dd",
    "name": "Words"
  },
  "service": {
    "id": "64a3c119e205247c4f720eca",
    "name": "Translation"
  },
  "startDate": null,
  "status": 1,
  "timeBasedInvoice": false,
  "timeTrackers": {
    "duration": 0,
    "list": [],
    "running": false
  },
  "user": {
    "id": "568bd2f12028fde918f9a80b",
    "name": "Cédric Doe"
  },
  "createdAt": "2024-10-07T11:19:55.235Z",
  "updatedAt": "2024-10-07T11:51:38.445Z"
}

DELETE/v2/jobs/:id

Delete a job

This endpoint allows you to delete a job.

Request

DELETE
/v2/jobs/:id
curl -X DELETE https://api.lsp.expert/v2/jobs/6703c3db1efed1712305bc4e \
  -u {key}:

POST/v2/jobs/:id/matches

Add a match for a job

This endpoint allows you to add a match category on a job.

Parameters

  • matchstring Required

    The match id.

  • quantitynumber Required

    The quantity.

Request

POST
/v2/jobs/:id/matches
curl https://api.lsp.expert/v2/jobs/6703c3db1efed1712305bc4e/match \
  -u {key}: \
  -d match="56c1d755957bab182e818453" \
  -d quantity=1000

Response

{
  "id": "6703c3db1efed1712305bc4e",
  "name": "Demo job",
  "additionalInfo": null,
  "applyMinimumFee": true,
  "archive": false,
  "client": {
    "id": "568bdb3b96fd75ea201566de",
    "name": "Linguition"
  },
  "deliveryDate": null,
  "discount": 0,
  "dueDate": "2024-10-07T12:00:00.000Z",
  "estimation": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    },
    "details": {
      "currency": {
        "code": "EUR",
        "symbol": "€"
      },
      "discount": {
        "amount": 0,
        "value": 0
      },
      "extraCharge": {
        "amount": 0,
        "percentage": 0,
        "type": "percentage"
      },
      "matches": [
        {
          "discount": 0,
          "extraCharge": 0,
          "unitCost": 0.12,
          "quantity": 1000,
          "lineTotal": 120,
          "match": {
            "id": "56c1d755957bab182e818453",
            "name": "0%"
          },
          "id": "6703c7881efed1c12405c692"
        }
      ],
      "minimumFeeApplied": false,
      "quantity": {
        "quantityType": {
          "id": "58942d4e429f6a1d362510dd",
          "name": "Words"
        },
        "value": 1000
      },
      "service": {
        "id": "64a3c119e205247c4f720eca",
        "name": "Translation"
      },
      "subtotal": 120,
      "total": 120,
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 120,
          "discount": 0,
          "total": 120
        },
        "total": 120
      },
      "unitCost": 0.12
    },
    "isV2": true,
    "outsourcing": {
      "suppliers": [],
      "totals": []
    },
    "performance": {
      "status": "incorrectStatus"
    },
    "profitability": {
      "status": "incorrectStatus",
      "withMargin": {
        "status": "incorrectStatus"
      }
    },
    "total": 120,
    "totalInvoiced": null,
    "type": "estimation"
  },
  "externalReference": "2024-07-003",
  "extraCharge": {
    "amount": 0,
    "percentage": 0,
    "type": "percentage"
  },
  "files": [],
  "fixedPrice": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    }
  },
  "isV2": true,
  "labels": [],
  "languagePair": {
    "id": "63e118cfa50b6659a44ad174",
    "bidirectional": false,
    "source": {
      "name": "English",
      "code": "en"
    },
    "target": {
      "name": "French",
      "code": "fr"
    }
  },
  "nonBillable": false,
  "notes": [],
  "object": "job",
  "outsourcing": [],
  "pinned": false,
  "progress": 0,
  "quantity": {
    "catFile": {
      "fileIds": []
    },
    "hasMatches": false,
    "matches": [
      {
        "quantity": 1000,
        "percentage": 1,
        "unitCost": 0.12,
        "id": "56c1d755957bab182e818453",
        "name": "0%"
      }
    ],
    "matchesType": "fixed",
    "timeBasedUnitCost": 0,
    "unitCost": 0.12,
    "unitCostPriceReference": {
      "id": "64a3c1315c27ec2b64add6a4",
      "type": "client"
    },
    "value": 1000
  },
  "quantityType": {
    "id": "58942d4e429f6a1d362510dd",
    "name": "Words"
  },
  "service": {
    "id": "64a3c119e205247c4f720eca",
    "name": "Translation"
  },
  "startDate": null,
  "status": 1,
  "timeBasedInvoice": false,
  "timeTrackers": {
    "duration": 0,
    "list": [],
    "running": false
  },
  "user": {
    "id": "568bd2f12028fde918f9a80b",
    "name": "Cédric Doe"
  },
  "createdAt": "2024-10-07T11:19:55.235Z",
  "updatedAt": "2024-10-07T11:35:36.686Z"
}

PUT/v2/jobs/:id/matches/:matchId

Update a match for a job

This endpoint allows you to update a match category on a job.

Parameters

  • percentagenumber

    percentage

  • quantitynumber

    The quantity

  • unitCostnumber

    The cost per unit.

Request

PUT
/v2/jobs/:id/matches/:matchId
curl https://api.lsp.expert/v2/jobs/6703c3db1efed1712305bc4e/match/56c1d755957bab182e818453 \
  -u {key}: \
  -d unitCost=0.13

Response

{
  "id": "6703c3db1efed1712305bc4e",
  "name": "Demo job",
  "additionalInfo": null,
  "applyMinimumFee": true,
  "archive": false,
  "client": {
    "id": "568bdb3b96fd75ea201566de",
    "name": "Linguition"
  },
  "deliveryDate": null,
  "discount": 0,
  "dueDate": "2024-10-07T12:00:00.000Z",
  "estimation": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    },
    "details": {
      "currency": {
        "code": "EUR",
        "symbol": "€"
      },
      "discount": {
        "amount": 0,
        "value": 0
      },
      "extraCharge": {
        "amount": 0,
        "percentage": 0,
        "type": "percentage"
      },
      "matches": [
        {
          "discount": 0,
          "extraCharge": 0,
          "unitCost": 0.12,
          "quantity": 1000,
          "lineTotal": 120,
          "match": {
            "id": "56c1d755957bab182e818453",
            "name": "0%"
          },
          "id": "6703c7881efed1c12405c692"
        }
      ],
      "minimumFeeApplied": false,
      "quantity": {
        "quantityType": {
          "id": "58942d4e429f6a1d362510dd",
          "name": "Words"
        },
        "value": 1000
      },
      "service": {
        "id": "64a3c119e205247c4f720eca",
        "name": "Translation"
      },
      "subtotal": 120,
      "total": 120,
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 120,
          "discount": 0,
          "total": 120
        },
        "total": 120
      },
      "unitCost": 0.12
    },
    "isV2": true,
    "outsourcing": {
      "suppliers": [],
      "totals": []
    },
    "performance": {
      "status": "incorrectStatus"
    },
    "profitability": {
      "status": "incorrectStatus",
      "withMargin": {
        "status": "incorrectStatus"
      }
    },
    "total": 120,
    "totalInvoiced": null,
    "type": "estimation"
  },
  "externalReference": "2024-07-003",
  "extraCharge": {
    "amount": 0,
    "percentage": 0,
    "type": "percentage"
  },
  "files": [],
  "fixedPrice": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    }
  },
  "isV2": true,
  "labels": [],
  "languagePair": {
    "id": "63e118cfa50b6659a44ad174",
    "bidirectional": false,
    "source": {
      "name": "English",
      "code": "en"
    },
    "target": {
      "name": "French",
      "code": "fr"
    }
  },
  "nonBillable": false,
  "notes": [],
  "object": "job",
  "outsourcing": [],
  "pinned": false,
  "progress": 0,
  "quantity": {
    "catFile": {
      "fileIds": []
    },
    "hasMatches": false,
    "matches": [
      {
        "quantity": 1000,
        "percentage": 1,
        "unitCost": 0.12,
        "id": "56c1d755957bab182e818453",
        "name": "0%"
      }
    ],
    "matchesType": "fixed",
    "timeBasedUnitCost": 0,
    "unitCost": 0.13,
    "unitCostPriceReference": {
      "id": "64a3c1315c27ec2b64add6a4",
      "type": "client"
    },
    "value": 1000
  },
  "quantityType": {
    "id": "58942d4e429f6a1d362510dd",
    "name": "Words"
  },
  "service": {
    "id": "64a3c119e205247c4f720eca",
    "name": "Translation"
  },
  "startDate": null,
  "status": 1,
  "timeBasedInvoice": false,
  "timeTrackers": {
    "duration": 0,
    "list": [],
    "running": false
  },
  "user": {
    "id": "568bd2f12028fde918f9a80b",
    "name": "Cédric Doe"
  },
  "createdAt": "2024-10-07T11:19:55.235Z",
  "updatedAt": "2024-10-07T11:35:36.686Z"
}

PUT/v2/jobs/:id/matches/:matchId/move/:newPosition

Move a match for a job

This endpoint allows you to modify a match category order. Note that this order is used when adding a price.

Request

PUT
/v2/jobs/:id/matches/:matchId/move/:newPosition
curl https://api.lsp.expert/v2/jobs/6703c3db1efed1712305bc4e/matches/56c1d755957bab182e818453/move/1 \
  -u {key}: \

Response

    {
  "id": "6703c3db1efed1712305bc4e",
  "name": "Demo job",
  "additionalInfo": null,
  "applyMinimumFee": true,
  "archive": false,
  "client": {
    "id": "568bdb3b96fd75ea201566de",
    "name": "Linguition"
  },
  "deliveryDate": null,
  "discount": 0,
  "dueDate": "2024-10-07T12:00:00.000Z",
  "estimation": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    },
    "details": {
      "currency": {
        "code": "EUR",
        "symbol": "€"
      },
      "discount": {
        "amount": 0,
        "value": 0
      },
      "extraCharge": {
        "amount": 0,
        "percentage": 0,
        "type": "percentage"
      },
      "matches": [
        {
          "discount": 0,
          "extraCharge": 0,
          "unitCost": 0.12,
          "quantity": 1000,
          "lineTotal": 120,
          "match": {
            "id": "56c1d755957bab182e818453",
            "name": "0%"
          },
          "id": "6703c7881efed1c12405c692"
        }
      ],
      "minimumFeeApplied": false,
      "quantity": {
        "quantityType": {
          "id": "58942d4e429f6a1d362510dd",
          "name": "Words"
        },
        "value": 1000
      },
      "service": {
        "id": "64a3c119e205247c4f720eca",
        "name": "Translation"
      },
      "subtotal": 120,
      "total": 120,
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 120,
          "discount": 0,
          "total": 120
        },
        "total": 120
      },
      "unitCost": 0.12
    },
    "isV2": true,
    "outsourcing": {
      "suppliers": [],
      "totals": []
    },
    "performance": {
      "status": "incorrectStatus"
    },
    "profitability": {
      "status": "incorrectStatus",
      "withMargin": {
        "status": "incorrectStatus"
      }
    },
    "total": 120,
    "totalInvoiced": null,
    "type": "estimation"
  },
  "externalReference": "2024-07-003",
  "extraCharge": {
    "amount": 0,
    "percentage": 0,
    "type": "percentage"
  },
  "files": [],
  "fixedPrice": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    }
  },
  "isV2": true,
  "labels": [],
  "languagePair": {
    "id": "63e118cfa50b6659a44ad174",
    "bidirectional": false,
    "source": {
      "name": "English",
      "code": "en"
    },
    "target": {
      "name": "French",
      "code": "fr"
    }
  },
  "nonBillable": false,
  "notes": [],
  "object": "job",
  "outsourcing": [],
  "pinned": false,
  "progress": 0,
  "quantity": {
    "catFile": {
      "fileIds": []
    },
    "hasMatches": false,
    "matches": [
      {
        "quantity": 1000,
        "percentage": 1,
        "unitCost": 0.12,
        "id": "56c1d755957bab182e818453",
        "name": "0%"
      }
    ],
    "matchesType": "fixed",
    "timeBasedUnitCost": 0,
    "unitCost": 0.13,
    "unitCostPriceReference": {
      "id": "64a3c1315c27ec2b64add6a4",
      "type": "client"
    },
    "value": 1000
  },
  "quantityType": {
    "id": "58942d4e429f6a1d362510dd",
    "name": "Words"
  },
  "service": {
    "id": "64a3c119e205247c4f720eca",
    "name": "Translation"
  },
  "startDate": null,
  "status": 1,
  "timeBasedInvoice": false,
  "timeTrackers": {
    "duration": 0,
    "list": [],
    "running": false
  },
  "user": {
    "id": "568bd2f12028fde918f9a80b",
    "name": "Cédric Doe"
  },
  "createdAt": "2024-10-07T11:19:55.235Z",
  "updatedAt": "2024-10-07T11:35:36.686Z"
}



DEL/v2/jobs/:id/matches/:matchId

Remove a match for a job

This endpoint allows you to remove a match category on a job.

Request

POST
/v2/jobs/:id/matches/:matchId
curl https://api.lsp.expert/v2/jobs/6703c3db1efed1712305bc4e/matches/56c1d755957bab182e818453 \
  -u {key}: 

Response

{
  "id": "6703c3db1efed1712305bc4e",
  "name": "Demo job",
  "additionalInfo": null,
  "applyMinimumFee": true,
  "archive": false,
  "client": {
    "id": "568bdb3b96fd75ea201566de",
    "name": "Linguition"
  },
  "discount": 0,
  "dueDate": "2024-10-07T12:00:00.000Z",
  "estimation": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    },
    "details": {
      "currency": {
        "code": "EUR",
        "symbol": "€"
      },
      "discount": {
        "amount": 0,
        "value": 0
      },
      "extraCharge": {
        "amount": 0,
        "percentage": 0,
        "type": "percentage"
      },
      "matches": [],
      "minimumFeeApplied": false,
      "quantity": {
        "quantityType": {
          "id": "58942d4e429f6a1d362510dd",
          "name": "Words"
        },
        "value": 1000
      },
      "service": {
        "id": "64a3c119e205247c4f720eca",
        "name": "Translation"
      },
      "subtotal": 120,
      "total": 120,
      "totalDetails": {
        "extraCharge": {
          "amount": 0,
          "discount": 0,
          "total": 0
        },
        "subtotal": {
          "amount": 120,
          "discount": 0,
          "total": 120
        },
        "total": 120
      },
      "unitCost": 0.12
    },
    "isV2": true,
    "outsourcing": {
      "suppliers": [],
      "totals": []
    },
    "performance": {
      "status": "incorrectStatus"
    },
    "profitability": {
      "status": "incorrectStatus",
      "withMargin": {
        "status": "incorrectStatus"
      }
    },
    "total": 120,
    "totalInvoiced": null,
    "type": "estimation"
  },
  "externalReference": "2024-07-003",
  "extraCharge": {
    "amount": 0,
    "percentage": 0,
    "type": "percentage"
  },
  "files": [],
  "fixedPrice": {
    "currency": {
      "code": "EUR",
      "symbol": "€"
    }
  },
  "isV2": true,
  "labels": [],
  "languagePair": {
    "id": "63e118cfa50b6659a44ad174",
    "bidirectional": false,
    "source": {
      "name": "English",
      "code": "en"
    },
    "target": {
      "name": "French",
      "code": "fr"
    }
  },
  "nonBillable": false,
  "notes": [],
  "object": "job",
  "outsourcing": [],
  "pinned": false,
  "progress": 0.5,
  "quantity": {
    "catFile": {
      "fileIds": []
    },
    "hasMatches": false,
    "matches": [],
    "matchesType": "fixed",
    "timeBasedUnitCost": 0,
    "unitCost": 0.12,
    "unitCostPriceReference": {
      "id": "64a3c1315c27ec2b64add6a4",
      "type": "client"
    },
    "value": 1000
  },
  "quantityType": {
    "id": "58942d4e429f6a1d362510dd",
    "name": "Words"
  },
  "service": {
    "id": "64a3c119e205247c4f720eca",
    "name": "Translation"
  },
  "startDate": null,
  "status": 2,
  "timeBasedInvoice": false,
  "timeTrackers": {
    "duration": 0,
    "list": [],
    "running": false
  },
  "user": {
    "id": "568bd2f12028fde918f9a80b",
    "name": "Cédric Doe"
  },
  "createdAt": "2024-10-07T11:19:55.235Z",
  "updatedAt": "2024-10-07T11:19:55.371Z"
}