1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
use anyhow::Result;

use crate::Client;

pub struct Locations {
    client: Client,
}

impl Locations {
    #[doc(hidden)]
    pub fn new(client: Client) -> Self {
        Locations { client }
    }

    /**
     * Get company locations.
     *
     * This function performs a `GET` to the `/v1/companies/{company_id_or_uuid}/locations` endpoint.
     *
     * Company locations represent all addresses associated with a company. These can be filing addesses, mailing addresses, and/or work locations; one address may serve multiple, or all, purposes.
     *
     * Since all company locations are subsets of locations, retrieving or updating an individual record should be done via the locations endpoints.
     */
    pub async fn get_company_locations(
        &self,
        company_id_or_uuid: &str,
    ) -> Result<Vec<crate::types::Location>> {
        let url = format!(
            "/v1/companies/{}/locations",
            crate::progenitor_support::encode_path(&company_id_or_uuid.to_string()),
        );

        self.client.get(&url, None).await
    }

    /**
     * Get company locations.
     *
     * This function performs a `GET` to the `/v1/companies/{company_id_or_uuid}/locations` endpoint.
     *
     * As opposed to `get_company_locations`, this function returns all the pages of the request at once.
     *
     * Company locations represent all addresses associated with a company. These can be filing addesses, mailing addresses, and/or work locations; one address may serve multiple, or all, purposes.
     *
     * Since all company locations are subsets of locations, retrieving or updating an individual record should be done via the locations endpoints.
     */
    pub async fn get_all_company_locations(
        &self,
        company_id_or_uuid: &str,
    ) -> Result<Vec<crate::types::Location>> {
        let url = format!(
            "/v1/companies/{}/locations",
            crate::progenitor_support::encode_path(&company_id_or_uuid.to_string()),
        );

        self.client.get_all_pages(&url, None).await
    }

    /**
     * Create a company location.
     *
     * This function performs a `POST` to the `/v1/companies/{company_id_or_uuid}/locations` endpoint.
     *
     * Company locations represent all addresses associated with a company. These can be filing addesses, mailing addresses, and/or work locations; one address may serve multiple, or all, purposes.
     *
     * Since all company locations are subsets of locations, retrieving or updating an individual record should be done via the locations endpoints.
     */
    pub async fn post_company_locations(
        &self,
        company_id_or_uuid: &str,
        body: &crate::types::PostCompanyLocationsRequest,
    ) -> Result<crate::types::Location> {
        let url = format!(
            "/v1/companies/{}/locations",
            crate::progenitor_support::encode_path(&company_id_or_uuid.to_string()),
        );

        self.client
            .post(
                &url,
                Some(reqwest::Body::from(serde_json::to_vec(body).unwrap())),
            )
            .await
    }

    /**
     * Get a location.
     *
     * This function performs a `GET` to the `/v1/locations/{location_id}` endpoint.
     *
     * Get a location.
     */
    pub async fn get_locations_location_id(
        &self,
        location_id: &str,
    ) -> Result<crate::types::Location> {
        let url = format!(
            "/v1/locations/{}",
            crate::progenitor_support::encode_path(&location_id.to_string()),
        );

        self.client.get(&url, None).await
    }

    /**
     * Update a location.
     *
     * This function performs a `PUT` to the `/v1/locations/{location_id}` endpoint.
     *
     * Update a location.
     */
    pub async fn put_locations_location_id(
        &self,
        location_id: &str,
        body: &crate::types::PutLocationsLocationIdRequest,
    ) -> Result<crate::types::Location> {
        let url = format!(
            "/v1/locations/{}",
            crate::progenitor_support::encode_path(&location_id.to_string()),
        );

        self.client
            .put(
                &url,
                Some(reqwest::Body::from(serde_json::to_vec(body).unwrap())),
            )
            .await
    }
}