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.
  • 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.

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.

  • 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"
}