From adea57c2ac93ba4329529d2728f13f646af2674e Mon Sep 17 00:00:00 2001 From: Henty Date: Wed, 26 Feb 2025 12:18:51 +0000 Subject: [PATCH 1/4] Job change docs --- pages/services/create-update-cj.json | 45 ++++++++++++++++++++++++ pages/services/create-update-cj.md | 7 ++++ pages/services/create-update-cj.py | 10 ++++++ pages/services/create-update-rcr.json | 49 +++++++++++++++++++++++++++ pages/services/create-update-rcr.md | 7 ++++ pages/services/create-update-rcr.py | 11 ++++++ pages/services/remove-cj.json | 38 +++++++++++++++++++++ pages/services/remove-cj.md | 3 ++ pages/services/remove-cj.py | 8 +++++ pages/services/remove-rcr.json | 38 +++++++++++++++++++++ pages/services/remove-rcr.md | 3 ++ pages/services/remove-rcr.py | 8 +++++ pages/tenders/accept-a-tender.json | 26 ++++++++++++++ pages/tenders/accept-a-tender.md | 4 +++ pages/tenders/accept-a-tender.py | 5 +++ pages/tenders/reject-a-tender.json | 26 ++++++++++++++ pages/tenders/reject-a-tender.md | 4 +++ pages/tenders/reject-a-tender.py | 5 +++ 18 files changed, 297 insertions(+) create mode 100644 pages/services/create-update-cj.json create mode 100644 pages/services/create-update-cj.md create mode 100644 pages/services/create-update-cj.py create mode 100644 pages/services/create-update-rcr.json create mode 100644 pages/services/create-update-rcr.md create mode 100644 pages/services/create-update-rcr.py create mode 100644 pages/services/remove-cj.json create mode 100644 pages/services/remove-cj.md create mode 100644 pages/services/remove-cj.py create mode 100644 pages/services/remove-rcr.json create mode 100644 pages/services/remove-rcr.md create mode 100644 pages/services/remove-rcr.py create mode 100644 pages/tenders/accept-a-tender.json create mode 100644 pages/tenders/accept-a-tender.md create mode 100644 pages/tenders/accept-a-tender.py create mode 100644 pages/tenders/reject-a-tender.json create mode 100644 pages/tenders/reject-a-tender.md create mode 100644 pages/tenders/reject-a-tender.py diff --git a/pages/services/create-update-cj.json b/pages/services/create-update-cj.json new file mode 100644 index 0000000..583abed --- /dev/null +++ b/pages/services/create-update-cj.json @@ -0,0 +1,45 @@ +{ + "allow_proposed_rates": false, + "branch": 3, + "branch_tax_setup": "Default Company Tax (20%)", + "cap": null, + "colour": "SlateGray", + "conjobs": [ + { + "contractor": 43, + "contractor_permissions": "edit", + "name": "last_namé_4", + "pay_rate": "100.00" + }, + ], + "contractor_tax_setup": "Default Tutor Tax (no tax)", + "created": "2018-01-02T12:00:00Z", + "description": "servicé 0", + "dft_charge_type": "hourly", + "dft_charge_rate": 100.0, + "dft_contractor_permissions": "add-edit-complete", + "dft_contractor_rate": 50.0, + "dft_location": null, + "dft_max_srs": null, + "extra_attrs": [], + "extra_fee_per_apt": null, + "id": 302, + "inactivity_time": 14, + "is_bookable": false, + "is_deleted": false, + "labels": [], + "last_updated": "2025-02-26T11:58:03.204439Z", + "latest_apt_ahc": "2025-02-26T11:58:02.644095Z", + "name": "Servicé 0", + "net_gross": "gross", + "rcrs": [], + "report_required": false, + "require_con_job": true, + "require_rcr": true, + "review_units": null, + "sales_codes": null, + "desired_skills": [], + "sr_premium": null, + "status": "available", + "total_apt_units": 2.0 +} \ No newline at end of file diff --git a/pages/services/create-update-cj.md b/pages/services/create-update-cj.md new file mode 100644 index 0000000..4e46141 --- /dev/null +++ b/pages/services/create-update-cj.md @@ -0,0 +1,7 @@ +### Add/Edit Contractor on Service + +This endpoint is for existing Services. To add a new Contractor or edit an existing +Contractor's `pay_rate`, simply supply the Contractor's ID and the `pay_rate`. The `pay_rate` +is not required and if no value is passed we will use the Service's `dft_pay_rate` or keep their existing `pay_rate`. +This will not update any pay rates on existing appointments and will not be able to add contractors to existing +appointments. To add a contractor to an existing appointment, use the `Add/Edit Contractor on Appointment` endpoint. diff --git a/pages/services/create-update-cj.py b/pages/services/create-update-cj.py new file mode 100644 index 0000000..15748c1 --- /dev/null +++ b/pages/services/create-update-cj.py @@ -0,0 +1,10 @@ +import pprint, requests + +headers = {'Authorization': 'token '} +data = { + "contractor": 43, + "pay_rate": "100.00", + "contractor_permissions": "edit" +} +r = requests.post('https://secure.tutorcruncher.com/api/services//contractor/add/', json=data, headers=headers) +pprint.pprint(r.json()) diff --git a/pages/services/create-update-rcr.json b/pages/services/create-update-rcr.json new file mode 100644 index 0000000..05add38 --- /dev/null +++ b/pages/services/create-update-rcr.json @@ -0,0 +1,49 @@ +{ + "allow_proposed_rates": false, + "branch": 411, + "branch_tax_setup": "Default Company Tax (20%)", + "cap": null, + "colour": "Tomato", + "conjobs": [], + "contractor_tax_setup": "Default Tutor Tax (no tax)", + "created": "2018-01-02T12:00:00Z", + "description": "servicé 0", + "dft_charge_type": "hourly", + "dft_charge_rate": 100.0, + "dft_contractor_permissions": "add-edit-complete", + "dft_contractor_rate": 50.0, + "dft_location": null, + "dft_max_srs": null, + "extra_attrs": [], + "extra_fee_per_apt": null, + "id": 304, + "inactivity_time": 14, + "is_bookable": false, + "is_deleted": false, + "labels": [], + "last_updated": "2025-02-26T12:09:38.307429Z", + "latest_apt_ahc": "2025-02-26T12:09:37.736799Z", + "name": "Servicé 0", + "net_gross": "gross", + "rcrs": [ + { + "recipient": 2007, + "recipient_name": "last_namé_0", + "paying_client": 2006, + "paying_client_name": "last_namé_1", + "charge_rate": "100.00", + "agent": 2012, + "agent_name": "last_namé_6", + "agent_percentage": "10.000", + } + ], + "report_required": false, + "require_con_job": True, + "require_rcr": True, + "review_units": null, + "sales_codes": null, + "desired_skills": [], + "sr_premium": null, + "status": "available", + "total_apt_units": 2.0 +} diff --git a/pages/services/create-update-rcr.md b/pages/services/create-update-rcr.md new file mode 100644 index 0000000..3241c2d --- /dev/null +++ b/pages/services/create-update-rcr.md @@ -0,0 +1,7 @@ +### Add/Edit Recipient on Service + +To add a new Recipient or edit an existing Recipient's `charge_rate`, simply supply the Recipient's ID and +the `charge_rate`. The `charge_rate` is not required and if no value is passed we will use the Service's +`dft_charge_rate` or keep their existing `charge_rate`. +This will not update any charge rates on existing appointments and will not be able to add recipients to existing +appointments. To add a recipient to an existing appointment, use the `Add/Edit Recipient on Appointment` endpoint. diff --git a/pages/services/create-update-rcr.py b/pages/services/create-update-rcr.py new file mode 100644 index 0000000..6f18298 --- /dev/null +++ b/pages/services/create-update-rcr.py @@ -0,0 +1,11 @@ +import pprint, requests + +headers = {'Authorization': 'token '} +data = { + 'recipient': 2007, + 'charge_rate': 100, + 'agent': 2012, + 'agent_percentage': 10, +} +r = requests.post('https://secure.tutorcruncher.com/api/services//recipient/add/', json=data, headers=headers) +pprint.pprint(r.json()) diff --git a/pages/services/remove-cj.json b/pages/services/remove-cj.json new file mode 100644 index 0000000..0327dae --- /dev/null +++ b/pages/services/remove-cj.json @@ -0,0 +1,38 @@ +{ + "allow_proposed_rates": false, + "branch": 414, + "branch_tax_setup": "Default Company Tax (20%)", + "cap": null, + "colour": "MediumBlue", + "conjobs": [], + "contractor_tax_setup": "Default Tutor Tax (no tax)", + "created": "2018-01-02T12:00:00Z", + "description": "servicé 0", + "dft_charge_type": "hourly", + "dft_charge_rate": 100.0, + "dft_contractor_permissions": "add-edit-complete", + "dft_contractor_rate": 50.0, + "dft_location": null, + "dft_max_srs": null, + "extra_attrs": [], + "extra_fee_per_apt": null, + "id": 307, + "inactivity_time": 14, + "is_bookable": false, + "is_deleted": false, + "labels": [], + "last_updated": "2025-02-26T12:16:28.193502Z", + "latest_apt_ahc": "2025-02-26T12:16:27.644631Z", + "name": "Servicé 0", + "net_gross": "gross", + "rcrs": [], + "report_required": false, + "require_con_job": true, + "require_rcr": true, + "review_units": null, + "sales_codes": null, + "desired_skills": [], + "sr_premium": null, + "status": "available", + "total_apt_units": 2.0, +} diff --git a/pages/services/remove-cj.md b/pages/services/remove-cj.md new file mode 100644 index 0000000..48a58eb --- /dev/null +++ b/pages/services/remove-cj.md @@ -0,0 +1,3 @@ +### Remove Contractor from Service + +To remove a Contractor from a Service simply pass the Contractor's ID in the field `contractor`. diff --git a/pages/services/remove-cj.py b/pages/services/remove-cj.py new file mode 100644 index 0000000..7bd8e50 --- /dev/null +++ b/pages/services/remove-cj.py @@ -0,0 +1,8 @@ +import pprint, requests + +headers = {'Authorization': 'token '} +data = { + "contractor": 43, +} +r = requests.post('https://secure.tutorcruncher.com/api/services//contractor/remove/', json=data, headers=headers) +pprint.pprint(r.json()) diff --git a/pages/services/remove-rcr.json b/pages/services/remove-rcr.json new file mode 100644 index 0000000..b8ccc6b --- /dev/null +++ b/pages/services/remove-rcr.json @@ -0,0 +1,38 @@ +{ + "allow_proposed_rates": false, + "branch": 412, + "branch_tax_setup": "Default Company Tax (20%)", + "cap": null, + "colour": "PeachPuff", + "conjobs": [], + "contractor_tax_setup": "Default Tutor Tax (no tax)", + "created": "2018-01-02T12:00:00Z", + "description": "servicé 0", + "dft_charge_type": "hourly", + "dft_charge_rate": 100.0, + "dft_contractor_permissions": "add-edit-complete", + "dft_contractor_rate": 50.0, + "dft_location": null, + "dft_max_srs": null, + "extra_attrs": [], + "extra_fee_per_apt": null, + "id": 305, + "inactivity_time": 14, + "is_bookable": false, + "is_deleted": false, + "labels": [], + "last_updated": "2025-02-26T12:12:20.165851Z", + "latest_apt_ahc": "2025-02-26T12:12:19.585970Z", + "name": "Servicé 0", + "net_gross": "gross", + "rcrs": [], + "report_required": false, + "require_con_job": true, + "require_rcr": true, + "review_units": null, + "sales_codes": null, + "desired_skills": [], + "sr_premium": null, + "status": "available", + "total_apt_units": 2.0, +} \ No newline at end of file diff --git a/pages/services/remove-rcr.md b/pages/services/remove-rcr.md new file mode 100644 index 0000000..e7712fb --- /dev/null +++ b/pages/services/remove-rcr.md @@ -0,0 +1,3 @@ +### Remove Recipient from Service + +To remove a Recipient from a Service simply pass the Recipient's ID in the field `recipient`. diff --git a/pages/services/remove-rcr.py b/pages/services/remove-rcr.py new file mode 100644 index 0000000..418b04b --- /dev/null +++ b/pages/services/remove-rcr.py @@ -0,0 +1,8 @@ +import pprint, requests + +headers = {'Authorization': 'token '} +data = { + "recipient": 23, +} +r = requests.post('https://secure.tutorcruncher.com/api/services//recipient/remove/', json=data, headers=headers) +pprint.pprint(r.json()) diff --git a/pages/tenders/accept-a-tender.json b/pages/tenders/accept-a-tender.json new file mode 100644 index 0000000..203be48 --- /dev/null +++ b/pages/tenders/accept-a-tender.json @@ -0,0 +1,26 @@ +{ + "id": 73, + "description": "I love science", + "contractor": { + "id": 1985, + "first_name": null, + "last_name": "Teacherson", + "email": "jane_teacherson@example.com", + "url": "https://secure.tutorcruncher.com/api/contractors/1985/" + }, + "created": "2019-01-01T00:00:00Z", + "proposed_rate": null, + "service": { + "id": 300, + "name": "Jobalot", + "dft_charge_type": "hourly", + "created": "2019-01-01T00:00:00Z", + "dft_charge_rate": "100.00", + "dft_contractor_rate": "50.00", + "last_updated": "2025-02-25T17:30:52.234437Z", + "status": "available", + "url": "https://secure.tutorcruncher.com/api/services/300/" + }, + "status": "accepted" +} + diff --git a/pages/tenders/accept-a-tender.md b/pages/tenders/accept-a-tender.md new file mode 100644 index 0000000..cc3fcf7 --- /dev/null +++ b/pages/tenders/accept-a-tender.md @@ -0,0 +1,4 @@ +### Accept a tender + +Accepts an existing tender, adding the related contractor to the Service. Functions the same as if a job application +was approved through the UI. diff --git a/pages/tenders/accept-a-tender.py b/pages/tenders/accept-a-tender.py new file mode 100644 index 0000000..8aa1ec0 --- /dev/null +++ b/pages/tenders/accept-a-tender.py @@ -0,0 +1,5 @@ +import pprint, requests + +headers = {'Authorization': 'token '} +r = requests.post('https://secure.tutorcruncher.com/api/tenders//accept/', headers=headers) +pprint.pprint(r.json()) diff --git a/pages/tenders/reject-a-tender.json b/pages/tenders/reject-a-tender.json new file mode 100644 index 0000000..b4b0215 --- /dev/null +++ b/pages/tenders/reject-a-tender.json @@ -0,0 +1,26 @@ +{ + "id": 73, + "description": "I love science", + "contractor": { + "id": 1985, + "first_name": null, + "last_name": "Teacherson", + "email": "jane_teacherson@example.com", + "url": "https://secure.tutorcruncher.com/api/contractors/1985/" + }, + "created": "2019-01-01T00:00:00Z", + "proposed_rate": null, + "service": { + "id": 300, + "name": "Jobalot", + "dft_charge_type": "hourly", + "created": "2019-01-01T00:00:00Z", + "dft_charge_rate": "100.00", + "dft_contractor_rate": "50.00", + "last_updated": "2025-02-25T17:30:52.234437Z", + "status": "available", + "url": "https://secure.tutorcruncher.com/api/services/300/" + }, + "status": "rejected" +} + diff --git a/pages/tenders/reject-a-tender.md b/pages/tenders/reject-a-tender.md new file mode 100644 index 0000000..65693dc --- /dev/null +++ b/pages/tenders/reject-a-tender.md @@ -0,0 +1,4 @@ +### Reject a tender + +Rejects an existing tender, removing the related contractor from the Service. Functions the same as if a job application +was rejected through the UI. diff --git a/pages/tenders/reject-a-tender.py b/pages/tenders/reject-a-tender.py new file mode 100644 index 0000000..3cc77ca --- /dev/null +++ b/pages/tenders/reject-a-tender.py @@ -0,0 +1,5 @@ +import pprint, requests + +headers = {'Authorization': 'token '} +r = requests.post('https://secure.tutorcruncher.com/api/tenders//reject/', headers=headers) +pprint.pprint(r.json()) From b941e9b86b31e261cb390e1330fa9c770f3e9dab Mon Sep 17 00:00:00 2001 From: Henty Date: Wed, 26 Feb 2025 12:28:56 +0000 Subject: [PATCH 2/4] add to menu and fix some urls etc --- pages/services/remove-cj.md | 1 + pages/services/remove-rcr.md | 1 + pages/services/services.yml | 44 +++++++++++++++++++++++++++++++----- pages/tenders/tenders.yml | 16 +++++++++++++ 4 files changed, 56 insertions(+), 6 deletions(-) diff --git a/pages/services/remove-cj.md b/pages/services/remove-cj.md index 48a58eb..8429724 100644 --- a/pages/services/remove-cj.md +++ b/pages/services/remove-cj.md @@ -1,3 +1,4 @@ ### Remove Contractor from Service To remove a Contractor from a Service simply pass the Contractor's ID in the field `contractor`. +It is not possible to remove a Contractor from a Service if they are currently assigned to any Appointments. diff --git a/pages/services/remove-rcr.md b/pages/services/remove-rcr.md index e7712fb..f440901 100644 --- a/pages/services/remove-rcr.md +++ b/pages/services/remove-rcr.md @@ -1,3 +1,4 @@ ### Remove Recipient from Service To remove a Recipient from a Service simply pass the Recipient's ID in the field `recipient`. +It is not possible to remove a Recipient from a Service if they are currently assigned to any Appointments. diff --git a/pages/services/services.yml b/pages/services/services.yml index 594682f..beff2d9 100644 --- a/pages/services/services.yml +++ b/pages/services/services.yml @@ -48,10 +48,42 @@ sections: code_url: /api/services//add_label/ response: /services/label-add-to-a-service.json - - title: Add a Label to a Recipient - id: label-add-to-a-recipient - description: /recipients/label-add-to-a-recipient.md - code: /recipients/label-add-to-a-recipient.py + title: Removing a Label from a Service + id: label-remove-from-a-service + description: /services/label-remove-from-a-service.md + code: /services/label-remove-from-a-service.py code_type: POST - code_url: /api/recipients//add_label/ - response: /recipients/label-add-to-a-recipient.json + code_url: /api/services//remove_label/ + response: /services/label-remove-from-a-service.json + - + title: Add a Contractor to a Service + id: create-update-cj + description: /services/create-update-cj.md + code: /services/create-update-cj.py + code_type: POST + code_url: /api/services//add/ + response: /services/create-update-cj.json + - + title: Remove a Contractor from a Service + id: remove-cj + description: /services/remove-cj.md + code: /services/remove-cj.py + code_type: POST + code_url: /api/services//remove/ + response: /services/remove-cj.json + - + title: Add a Recipient to a Service + id: create-update-rcr + description: /services/create-update-rcr.md + code: /services/create-update-rcr.py + code_type: POST + code_url: /api/services//add/ + response: /services/create-update-rcr.json + - + title: Remove a Recipient from a Service + id: remove-rcr + description: /services/remove-rcr.md + code: /services/remove-rcr.py + code_type: POST + code_url: /api/services//remove/ + response: /services/remove-rcr.json diff --git a/pages/tenders/tenders.yml b/pages/tenders/tenders.yml index ad76197..2ea5845 100644 --- a/pages/tenders/tenders.yml +++ b/pages/tenders/tenders.yml @@ -15,3 +15,19 @@ sections: code_type: GET code_url: /api/tenders/ response: /tenders/list-all-tenders.json + - + title: Accept a Tender + id: accept-a-tender + description: /tenders/accept-a-tender.md + code: /tenders/accept-a-tender.py + code_type: POST + code_url: /api/tenders//accept/ + response: /tenders/accept-a-tender.json + - + title: Reject a Tender + id: reject-a-tender + description: /tenders/reject-a-tender.md + code: /tenders/reject-a-tender.py + code_type: POST + code_url: /api/tenders//reject/ + response: /tenders/reject-a-tender.json From d4f3f12c05183d14c0ca166b0da36014d5027973 Mon Sep 17 00:00:00 2001 From: Henty Date: Wed, 26 Feb 2025 14:29:21 +0000 Subject: [PATCH 3/4] More improvements --- pages/agents/update-an-agent.md | 5 ++--- pages/appointments/appointment-object.yml | 6 +++--- pages/clients/update-a-client.md | 5 ++--- pages/contractors/update-a-contractor.md | 5 ++--- pages/recipients/update-a-recipient.md | 5 ++--- 5 files changed, 11 insertions(+), 15 deletions(-) diff --git a/pages/agents/update-an-agent.md b/pages/agents/update-an-agent.md index 10caff5..bebcaa3 100644 --- a/pages/agents/update-an-agent.md +++ b/pages/agents/update-an-agent.md @@ -1,7 +1,6 @@ ### Update an Agent -Update an Agent object by supplying the ID as the unique identifier in the url. You must also supply required fields -like `last_name` even if they are not being updated. You only need to post information that you want to change and -not the whole Agent object. +Update an Agent object by supplying the ID as the unique identifier in the url. You only need to post +information that you want to change and not the whole Agent object. Check out [Creating/Updating Users](#creating-updating-users) for more information on linking to a specific user. diff --git a/pages/appointments/appointment-object.yml b/pages/appointments/appointment-object.yml index 5e88b6c..7bef0b8 100644 --- a/pages/appointments/appointment-object.yml +++ b/pages/appointments/appointment-object.yml @@ -167,12 +167,12 @@ filters: description: Filter by the Appointment's linked Job (id). - name: contractor - type: string + type: integer description: Filter by the Appointment's linked Tutor (id). - name: recipient - type: integer - description: Filter by the Appointment's recipient email address (id). + type: string + description: Filter by the Appointment's recipient email address. - name: location type: integer diff --git a/pages/clients/update-a-client.md b/pages/clients/update-a-client.md index 6e5f088..a5e6880 100644 --- a/pages/clients/update-a-client.md +++ b/pages/clients/update-a-client.md @@ -1,7 +1,6 @@ ### Update a Client -Update an Client object by supplying the ID as the unique identifier in the url. You must also supply required fields -like `last_name` even if they are not being updated. You only need to post information that you want to change and -not the whole Client object. +Update an Client object by supplying the ID as the unique identifier in the url. You only need to post information +that you want to change and not the whole Client object. Check out [Creating/Updating Users](#creating-updating-users) for more information on linking to a specific user. diff --git a/pages/contractors/update-a-contractor.md b/pages/contractors/update-a-contractor.md index 9e1121c..52c7a46 100644 --- a/pages/contractors/update-a-contractor.md +++ b/pages/contractors/update-a-contractor.md @@ -1,7 +1,6 @@ ### Update a Contractor -Update an Contractor object by supplying the ID as the unique identifier in the url. You must also supply required fields -like `last_name` even if they are not being updated. You only need to post information that you want to change and -not the whole Contractor object. +Update an Contractor object by supplying the ID as the unique identifier in the url. +You only need to post information that you want to change and not the whole Contractor object. Check out [Creating/Updating Users](#creating-updating-users) for more information on linking to a specific user. diff --git a/pages/recipients/update-a-recipient.md b/pages/recipients/update-a-recipient.md index ea35b1e..3d4b718 100644 --- a/pages/recipients/update-a-recipient.md +++ b/pages/recipients/update-a-recipient.md @@ -1,7 +1,6 @@ ### Update a Recipient -Update an Recipient object by supplying the ID as the unique identifier in the url. You must also supply required fields -like `last_name` even if they are not being updated. You only need to post information that you want to change and -not the whole Recipient object. +Update an Recipient object by supplying the ID as the unique identifier in the url. +You only need to post information that you want to change and not the whole Recipient object. Check out [Creating/Updating Users](#creating-updating-users) for more information on linking to a specific user. From 31f3f07ac467639956cf4c04d42903fd601881e9 Mon Sep 17 00:00:00 2001 From: Henty Date: Thu, 27 Feb 2025 10:16:33 +0000 Subject: [PATCH 4/4] Dans comments --- pages/appointments/appointment-object.yml | 4 ++-- pages/tenders/list-all-tenders.json | 1 + pages/tenders/tender-object.json | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pages/appointments/appointment-object.yml b/pages/appointments/appointment-object.yml index 7bef0b8..c39c166 100644 --- a/pages/appointments/appointment-object.yml +++ b/pages/appointments/appointment-object.yml @@ -171,8 +171,8 @@ filters: description: Filter by the Appointment's linked Tutor (id). - name: recipient - type: string - description: Filter by the Appointment's recipient email address. + type: integer + description: Filter by the Appointment's linked Student (id). - name: location type: integer diff --git a/pages/tenders/list-all-tenders.json b/pages/tenders/list-all-tenders.json index bdcf637..5460817 100644 --- a/pages/tenders/list-all-tenders.json +++ b/pages/tenders/list-all-tenders.json @@ -4,6 +4,7 @@ "previous": null, "results": [ { + "id": 73, "description": "I'd like to take up this student. I currently teach Economics A level (OCR) at Headington College and so know the syllabus very well, as well as being extremely good with the exam technique at a high level. I am able to start as soon as possible. I'm familiar with both these modules and the OCR board, so would be very happy to take on this student. I've time to take on 1-2 2hr sessions a week, plus marking, or more if required. Thanks.", "contractor": { "id": 47, diff --git a/pages/tenders/tender-object.json b/pages/tenders/tender-object.json index 85dea6c..1c76c05 100644 --- a/pages/tenders/tender-object.json +++ b/pages/tenders/tender-object.json @@ -1,4 +1,5 @@ { + "id": 73, "description": "I'd like to take up this student. I currently teach Economics A level (OCR) at Headington College and so know the syllabus very well, as well as being extremely good with the exam technique at a high level. I am able to start as soon as possible. I'm familiar with both these modules and the OCR board, so would be very happy to take on this student. I've time to take on 1-2 2hr sessions a week, plus marking, or more if required. Thanks.", "contractor": { "id": 47,